
今掲示板を作っています。
sjisでは特定の文字(表・予・申・能など)が文字化けする問題がありますが、簡単に対処できる方法をさがしています。
一番やりたい方法が、str_replace()関数を使って、例えば「表」を「\表」と書き換える関数を作って、何か書き込むときにはテキストデータをその関数にかけてしのぐというものです。しかし、実際に下のようにやってみると、PHPエラーが発生します。
$textdate = str_replace("表","\表",$textdate);
ちなみに、この文字が「表」以外の文字化けをおこさない文字ならばこのエラーは発生しません。
文字コードレベル(16進数レベル)で置換しなければならないのでしょうか?
No.1ベストアンサー
- 回答日時:
str_replaceは、日本語には正しく対応しないと聞き、入れ替えでしたた、mb_ereg_repalce の方が良いかと思います。
未確認ですが、"\表" → "\\表" 、または '\表' と思います。
また、チェックする時だけeuc-jpに変換して、後でshift_jisに戻すというのがあります。
$textdate = mb_convert_encoding( $textdate, 'EUC-JP', 'SJIS' );
$textdateの処理
$textdate = mb_convert_encoding( $textdate, 'SJIS', 'EUC-JP' );
ただ、sjisの文字化けに関しては、最初から全てshift_jisではなくeuc-jpで記すとこれらが解決いたします。
それぞれのファイルのエンコーディングをEUC、htmlのmetaのcharsetをECU-JPに変えるだけで済みますが。
回答ありがとうございます。
まさかその手があったとは思いもよりませんでした。
さっそくチェック時だけeuc-jpに変換の方法を試してみたいと思います。
No.3
- 回答日時:
No.2
- 回答日時:
PHP のことは全然知らないので,シフトJISという点についてだけコメントします.
>「表」を「\表」と書き換える
それをやるなら,「\表」じゃなくて「表\」です.
「表」= 0x95,0x5C(='\') なので,
「\表」= 0x5C('\'),0x95,0x5C('\')
「表\」= 0x95,0x5C('\'),0x5C('\')
Shift_JIS (Wikipedia)
http://ja.wikipedia.org/wiki/Shift_JIS#2.E3.83.9 …
→ 2バイト目に0x5Cを持つ文字(いわゆる「ダメ文字」)一覧
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化け変換方法
-
UTC-8→SJISで文字化け
-
sjisで書いているPHPとeucのM...
-
UTF8メールがLotus Notesで文字...
-
VBAのコマンドボタンの文字列の...
-
PPT ファイルの文字カウント=...
-
ソースコードの1行が長いとき...
-
エクセルのCOUNTIFが正しくカウ...
-
エスケープ文字の復帰(¥r)と...
-
COBOLの改行
-
【VBA】エクセルで最後の不要な...
-
文字の入力で横バー上段、中断...
-
改行について
-
C++で空Enterの入力を判...
-
\\nと\\rの違い
-
ファイルから読み取った改行文...
-
グレープシティのSPREAD...
-
エクセルでの漢字、カタカナ、...
-
改行を読み飛ばす
-
入力文字に\\マークが入ってい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
SQL Serverで文字コードUTF-8
-
postの文字化け防止について
-
PHPでの文字列置換について
-
SJISで取得した半角カナをUTF-8...
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
PostgreSQLからCSV形式でエクス...
-
UTF8メールがLotus Notesで文字...
-
SJIS→UTF-8変換後の文字化けに...
-
mb_send_mailの2重投稿を防止し...
-
セッションが文字化け、エンコ...
-
PHPでのメール差出人名について
-
mb_convert_encoding で 一部の...
-
mb_ereg_replace での文字変換
-
文字コードの検出が正しいかを...
-
メールのCCに複数のアドレスを...
-
文字コードを変換したURLを作成...
-
phpフォームで携帯へメール送信...
-
SJISからUTFに変換して...
-
mb_send_mailで、半角スペース...
おすすめ情報