ホームページ  >  記事  >  バックエンド開発  >  初心者向けのトランスコーディングの問題

初心者向けのトランスコーディングの問題

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

	$url='test.txt';	$read = fopen($url,'r') or die('打开失败');	$text=fread($read,100);	fclose($read);	echo iconv('UTF-8','GBK','这是一个测试').'<br/>';#这句OK	echo iconv('UTF-8','GBK',$text).'<br/>';#这句报错


上記の最初のエコーは正常ですが、2 番目のエコーは常に次のエラーを報告します:
注意: iconv(): 入力文字列で不正な文字が検出されました

test.txt ファイルは UTF-8 形式です。


ディスカッションに返信(解決策)

テキストに gbk の範囲を超える文字が含まれています

echo iconv('UTF-8','GBK//IGNORE',$text)
//IGNORE は無視できます 認識されません//TRANSLIT は、不明な文字とその背後にあるコンテンツを切り捨て、エラーを報告します

utf-8 の 3 バイト部分は gbk と同等です

ただし、utf の 2 バイト部分は、 -8 バイト部分は gbk に対応する部分がありません (すべてではありません)

最初のタイプ: iconv("UTF-8″,"GB2312//IGNORE",$data) ;

2 番目のタイプ: $outstr = mb_convert_encoding( $instr ,'UTF-8','GBK',); iconv を使用してエラーを報告する場合、この関数は iconv よりも幅広い文字セットを使用し、通常は iconv エラーを報告しません。 'UTF-8','GBK/ /IGNORE',$text) 試してみてください

上記の皆様のおかげで、問題は正常に解決されました。

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