ホームページ >バックエンド開発 >PHPチュートリアル >strtr関数の文字置換で文字化けが発生する

strtr関数の文字置換で文字化けが発生する

WBOY
WBOYオリジナル
2016-06-23 14:18:421579ブラウズ

私の置換語彙はテキスト ファイルから取得されます。テキストファイルを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を使います。これがコード化けの原因です。ご回答ありがとうございます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:php静的次の記事:php静的