ホームページ >バックエンド開発 >PHPチュートリアル >strtr関数の文字置換で文字化けが発生する
私の置換語彙はテキスト ファイルから取得されます。テキストファイルをgbk形式に変更してもutf-8形式に変更しても文字化けが発生します。
置換シソーラスを次のように自分で定義した場合:
$words = array('発行文说'=>'DDDDDDDDDDDDDDDDd');
置換時に文字化けが発生しません
$data['content'] = strtr($ data[' content'], $words);
単語変数を出力しましたが、中のフレーズは文字化けせず、関数を使用して検出しましたが、UTF-8 形式ではありませんでした。したがって、コンテンツと置換フレーズは両方とも gbk 形式の文字列であることが確認できます。
この問題を解決するにはどうすればよいですか?ありがとうございます
あなたの語彙の形式は何ですか?類語辞典はどうやって読みますか?
あなたの語彙の形式は何ですか?類語辞典はどうやって読みますか?
$data_file = PICK_DATA.'/word.txt';$handle = fopen($data_file, "r");$data = fread($handle, filesize($data_file));
あなたの語彙の形式は何ですか?類語辞典はどうやって読みますか?
ネットで調べたところ、文字列置換時に strtr が 1 バイトに置き換えられるため、1 バイト以外のエンコードデータ (中国語 utf-8 など) では文字化けが発生する可能性があります。
でも、私の弦はすべて gbk です。また、以前この機能を使用したことがありますが、文字化けは発生しませんでした。ここで文字化けが発生しますが、理由はわかりません。
シソーラスがどのように構成されているかについては述べていません
元の単語に単一の漢字が含まれている限り、文字化けの可能性は一般に 50% 以上です
あなたはシソーラスがどのように構成されているかについては述べていません。シソーラスは整理されています
元の単語に漢字が 1 文字含まれている限り、文字化けの可能性は通常 50% 以上です
問題が見つかります。文字を切り取るときはrnではなくnを使います。これがコード化けの原因です。ご回答ありがとうございます。