ユニコード

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

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");			}

も文字化けコードです
http://fashionistess.com/awr1/1.php

あなたが与えたリンクが何を反映しているのか理解できません

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);

申し訳ありませんが、今間違ったコードを書いてしまいました
リンクはテスト結果です。エンコーディングの問題は解析結果に影響します (以前は Linux で生成されたファイルのみを分析したため、この問題は見つかりませんでした) ありがとうございます。解決しました

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