ホームページ >バックエンド開発 >PHPチュートリアル >ユニコード
1. 現在処理されているファイルの種類は 2 つあります: txt html
2. ファイルのエンコーディングは不明です。ファイルのコンテンツを読み取るために、コンテンツのエンコーディングは最終的に utf-8 に変換され、最終的にデータベースに保存されます
現在、 mb_convert_encoding($file_content,'utf-8',"auto"); を使用したいのですが、うまくいかないようです。教えてください。分析を手伝ってください (txt の複雑さ)
ほとんどの場合、mb_convert_encoding を使用しても正しい判断を得ることができません
そこで、mb_string 拡張機能には新しいメンバー mb_check_encoding が追加されました
この関数は、次のことを正確に判断できますソースは指定された文字セットです
ただし、使用可能な文字セットを列挙するコードを記述する必要があります:
if(mb_check_encoding($s, 'utf-8')) ....
elseif(mb_check_encoding($s, ' gbk')) . ...
elseif(mb_check_encoding($s, 'big5')) ....
else ....
ほとんどの場合、mb_convert_encoding を使用しても正しい判断を得ることができません
したがって、mb_string 拡張機能には新しいメンバー mb_check_encoding が追加されました
この関数は、ソースが指定された文字セットであるかどうかを正確に判断できます
ただし、可能な文字セットを列挙するコードを記述する必要があります:
if(mb_check_encoding($s, 'utf-8) ')) ....
elseif(mb_check_encoding ($s, 'gbk')) ....
elseif(mb_check_encoding($s, 'big5')) ....
else ....
便利です、数日前、csv 形式を読み取る方法を書きました。データについては、txt を csv 形式に変換するエンコードの問題に苦労したことがあります...
ほとんどの場合、mb_convert_encoding を使用しても正しい判断が得られません
そこでmb_string 拡張機能には、新しいメンバー mb_check_encoding が追加されました
この関数は、ソースが指定された文字セットであるかどうかを正確に判断できます
ただし、使用可能な文字セットを列挙するコードを記述する必要があります:
if(mb_check_encoding($s, 'utf-8' )) ....
elseif(mb_check_encoding($s, 'gbk')) . ...
elseif(mb_check_encoding($s, 'big5')) ....
else ....
if(mb_convert_encoding($file_content,'ASCII')){ mb_convert_encoding($file_content,'UTF-8',"ASCII"); }elseif(mb_convert_encoding($file_content,'GB2312')){ mb_convert_encoding($file_content,'UTF-8',"GB2312"); }elseif(mb_convert_encoding($file_content,'GBK')){ mb_convert_encoding($file_content,'UTF-8',"GBK"); }elseif(mb_convert_encoding($file_content,'BIG5')){ mb_convert_encoding($file_content,'UTF-8',"BIG5"); }else{ mb_convert_encoding($file_content,'UTF-8',"auto"); }
あなたが与えたリンクが何を反映しているのか理解できません
mb_convert_encoding が不正確であることが分かったのに、なぜまだ使用しているのですかそれ?
$file_content = '待转码的内容';$charset = '';if(mb_check_encoding($file_content, 'utf-8')) $charset = ''; //已是 utf-8 了无需转码elseif(mb_check_encoding($file_content, 'big5')) $charset = 'big5'; //big5 的码值范围小于 gbk,应先判断elseif(mb_check_encoding($file_content, 'gbk')) $charset = 'gbk'; //gb2312 是 gbk 的子集,只判 gbk 就可以了if($charset) $file_content = mb_convert_encoding($file_content, 'utf-8', $charset);
あなたが与えた接続が何を反映しているのか理解できません
mb_convert_encoding が不正確であることが分かったのに、なぜまだそれを使用しているのですか?
$file_content = '待转码的内容';$charset = '';if(mb_check_encoding($file_content, 'utf-8')) $charset = ''; //已是 utf-8 了无需转码elseif(mb_check_encoding($file_content, 'big5')) $charset = 'big5'; //big5 的码值范围小于 gbk,应先判断elseif(mb_check_encoding($file_content, 'gbk')) $charset = 'gbk'; //gb2312 是 gbk 的子集,只判 gbk 就可以了if($charset) $file_content = mb_convert_encoding($file_content, 'utf-8', $charset);