お世話になります。
今、フォームから入力された半角カナを全角カナへ変換しようとしているのですが、どうしてもうまく行きません。
処理は以下のようにしています。
jcode::convert(\$str, 'euc');
if($str =~ /[\xA1-\xDF]/){
jcode::h2z_euc(\$str);
}
(1)まず、半角カナが含まれているかのチェックで[\xA1-\xDF]を使用していますが色々調べたところ、実際は
(?:\x8E[\xA6-\xDF])
が正しいようなのですが、この場合文字数が少ないとひっかかってくれません。例えば半角のア1文字や2文字など。また、文字数が多くても半角英数と半角カナが混在しているとひっかからない場合もあります。
上記の式だとひっかかってくれますが、この判定で構わないのでしょうか。
(2)上記の式できちんと置換されるものとされないで漢字のように文字化けするものと出てきてしまいます。
例えば「インターフェース」などという半角は全滅です。
「バージョン」などは大丈夫でした。
間違いなど教えて頂ければと思います。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
まず1行目の jcode::convert(\$str, 'euc'); で文字コードをEUC-JPに変換していることは理解されていますか。
この方法での文字コード変換は$strの内容が短い場合、自動的に文字コードを判別できず変換が失敗することがあります。
これは文字コードの性質上どうしようもありません。
入力される文字コードが確定している場合は3引数目に入力文字コードを入れれば解決できます。
jcode::convert(\$str, 'euc', 'sjis'); # 入力文字コードがsjisの場合
半角カタカナが[\xA1-\xDF]の範囲なのはsjisです。
EUC-JPは(?:\x8E[\xA6-\xDF])が正しい範囲です。
文字数が少ないと引っかからないのは前述の通りjcode::convertに失敗しているからです。
bgbgさんありがとうございます。
文字コードについてもごちゃごちゃになっていた上、文字によってはきちんと文字コードの取得、変換が出来ないという事を分かっていませんでした。
今回、sjisである事は分かっていますので、教えて頂いた通りに文字コードの指定をする事で綺麗に置換する事が出来ました。
随分長いこと悩んでいたので本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/10/25 10:52
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
常用漢字?でない文字を判定す...
-
ダブルクォート文字などをフォ...
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
VBA 置換文字がみつからない時
-
マクロを使ってフォルダー内に...
-
VBA EXCEL あるセルの中の一...
-
「何とかで始まり、何とかで終...
-
pythonエラー
-
データにカンマが入ったCSVデー...
-
全角入力
-
英数字のみ全角から半角に変換
-
パイソンエラーについて
-
word差し込み印刷 半角カタカ...
-
[VBA][Excel]クリップボードか...
-
CString から LPCTSTRの型に変換
-
VBA 文字に半角が含まれて...
-
全角英数字の必要性が理解できない
-
char型全角数字から、int型半角...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
InputMan の imTextについて
-
戻り値の意味がわかりません…
-
文字化けを元に戻せますか?
-
正規表現でカンマを対象にする方法
-
utf-8のマシンでsjisのデータフ...
-
unicodeの表示
-
ダブルクォート文字などをフォ...
-
チェックボックスの複数選択の...
-
jcodeを使ったgetcode
-
jcodeでsjisに変換できない
-
特殊文字をPOSTした際の動作は?
-
テキストエリアに半角「\\」ま...
-
文字化けの事で?
-
機種依存文字の文字コード変換
-
jcode.plについて
-
文字実体参照が勝手に変換され...
-
「数値文字参照への変換するソ...
-
nkfとjcodeの使い方の違いについて
-
半角と全角の文字数カウント方法
-
常用漢字?でない文字を判定す...
おすすめ情報