# ↓OKWEBでは半角カナ表示できないけど、半角カナのつもり
@kptk = (
'ヴ', 'ー', 'ッ',
'ガ', 'ギ', 'グ', 'ゲ', 'ゴ',
'ァ', 'ィ', 'ゥ', 'ェ', 'ォ',
'ア', 'イ', 'ウ', 'エ', 'オ',
・・・
);
# ↓こちらは全部全角カナ
@kptv = (
'ヴ', 'ー', 'ッ',
'ガ', 'ギ', 'グ', 'ゲ', 'ゴ',
'ァ', 'ィ', 'ゥ', 'ェ', 'ォ',
'ア', 'イ', 'ウ', 'エ', 'オ',
・・・
);
for(my $n = 0; $n < @kptk; $n++){
$data =~ s/$kptk[$n]/$kptv[$n]/eg;
}
などとして、半角カナを全角に直したいのですが、どうも半角の小さい'ァ'だけがまともに変換されません。
その付近の文字やそれ以降すべての文字が文字化けします。
インターネットエクスプローラ5から呼び出しています。
サーバーはソラリス。
文字コードはEUCです。
No.1ベストアンサー
- 回答日時:
不具合の原因は解りかねますが、単純に半角から全角にしたいだけならばh2z_xxx(xxxは変換したい文字コード:jis、sjis、euc)という関数をコールすれば簡単に変換出来ますよ。
例えば、
&jcode'h2z_sjis(\$v);
の様にすると、変数vに格納されている文字列中の半角カナを全て全角カナに変換することが出来ます。
お試し下さい。
注)jcode.plが使用可能になっている必要があります。
#ちなみにh2zとは「半角to全角」の略称と思われます。
#逆の機能を持つものとして、z2h_xxxもあります。
この回答への補足
配布したいので、できればjcode.plが使えるかどうかの環境を選びたくないのです。
小さい半角のァには、EUCでも困るようなエスケープシークエンスが入っているんでしょうか。
どうやら、2バイト文字の2バイト目と1バイト目とマッチしてしまう関係で、小さいァだけが変な変換をされていたようです。
なんとか解決しました。
ありがとうございました。
No.2
- 回答日時:
私の環境で試したのですが、現象が発生しませんでした。
確認環境はソラリス、IE5SP2。
提示されたロジックで、半角小文字のアは全角小文字のア
に変換されました。
また、それをブラウザで表示させたところ、文字化けは
起こりませんでした。
-> ソースにテキストエディタで見えないようなコード
が混入していませんか?
この回答への補足
返事が遅くなってすみません。
対象となっているのは大きな半角アではなく、"ファイル" とかの小さな半角ァです。
ちなみに、この方法では2バイト文字の2バイト目と次の2バイト文字の1文字目にマッチすることがあって、文字化けすること頻出でした。
@kptk = (前回のとおり);
@kptv = (前回のとおり);
$eucpattern = sprintf('([%c-%c][%c-%c])', 0x8E, 0xFE, 0xA1, 0xFE);
$eucpattern2 = sprintf('([%c-%c][%c-%c][%c-%c][%c-%c])', 0x8E, 0xFE, 0xA1, 0xFE, 0x8E, 0xFE, 0xA1, 0xFE);
for(my $n = 0; $n < @kptk; $n++){
(length($kptk[$n]) == 4) ? ($data =~ s/$eucpattern2/$1 eq $kptk[$n] ? $kptv[$n] : $1/eg) : ($data =~ s/$eucpattern/$1 eq $kptk[$n] ? $kptv[$n] : $1/eg);
}
などとやって、必ずEUC文字とマッチさせるようにして、変換すべきなら変換するようにしてます。
でもなんか動作が変です。
個のアルゴリズムは間違っているのでしょうか。
どうやら、2バイト文字の2バイト目と1バイト目とマッチしてしまう関係で、小さいァだけが変な変換をされていたようです。
なんとか解決しました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- マウス・キーボード 何故、ローマ字や英語を全角で打つ? 5 2022/05/15 09:36
- その他(ソフトウェア) ソースネクストアプリをインストールし、製品登録で半角英数字が入力できない 5 2022/07/03 22:44
- Android(アンドロイド) 海外のAndroid 端末の場合、日本語全角は、どう表示されるのでしょうか? 1 2022/10/02 21:16
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Mac OS Macの変換ですが、一発で半角英字に変換する方法は無いですか? 3 2022/04/10 22:19
- Excel(エクセル) 全角文字「ヴ」の半角文字「ヴ」への変換方法について 3 2022/11/05 12:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
VBA 文字に半角が含まれて...
-
エクセルにMicrosoft Barcode C...
-
Accessでのグループ化で全角・...
-
IEからEdgeへの移行に伴うIMEの...
-
COBOL・全角判定
-
VBで、String型のデータが、...
-
C言語のコンパイルエラーなん...
-
ダブルコーテーションの置換
-
プログラミングでは、半角括弧...
-
全角英数字の必要性が理解できない
-
Word2007の全角文字、全角スペ...
-
VBA Shift-JISをJISに変換する...
-
コマンドプロンプト 全角を含ん...
-
Accessで日付や数値を全角で表...
-
全角→半角変換 C UNIX
-
メモ帳の段落の揃え方
-
住宅にカナを入力する際に丁目...
-
Excel VBAでオートシェイプ内の...
-
VB.net、テキストボックス入力...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
住宅にカナを入力する際に丁目...
-
エクセルにMicrosoft Barcode C...
-
プログラミングでは、半角括弧...
-
IEからEdgeへの移行に伴うIMEの...
-
全角英数字の必要性が理解できない
-
VBA 文字に半角が含まれて...
-
Accessのテキストボックスの入...
-
word差し込み印刷 半角カタカ...
-
COBOL・全角判定
-
全角入力
-
VB.net、テキストボックス入力...
-
COBOLでの全角文字の判定をした...
-
CString Format にて全角空白文...
-
メモ帳の段落の揃え方
-
ダブルコーテーションの置換
-
正規表現で、全角文字を半角文...
-
VBで、String型のデータが、...
-
よくアカウント等に使われる 半...
-
エクセルでの”々”の扱い
おすすめ情報