2

私のプロジェクトの 1 つは、Web からドキュメントを取得して読み取ります。このドキュメントは第三者によって提供され、変更されません (内容は変更されますが、フォーマットやその他のものは変更されません)。問題は、このドキュメントには、UTF-8 である Word からのコンテンツのコピーと貼り付けが含まれていることですが、ドキュメントは ISO-8858-1 でエンコードされているため、これらの文字は「?」としてデータベースに保存されます。

テキストをパスして UTF-8 で再エンコードすると、スマートクォートと em ダッシュを取得する代わりに、2 つのゴミ文字が取得されます。

この ISO-8859-1 ドキュメントを UTF-8 文字で変換して UTF-8 に戻し、最初に作成されたとおりに表示できるようにするにはどうすればよいですか?

4

3 に答える 3

4
$fixed = mb_convert_encoding($broken, "UTF-8", "ISO-8859-1");

8859 に埋め込まれた UTF-8 を適切に処理できるかどうかはわかりませんが、それが「通常の」方法です。マニュアルページはこちら。それをぐるぐる回して、物事がよりきれいになるか、より壊れるかどうかを確認してください.

于 2011-03-02T20:26:49.150 に答える
3

ここで解決策を見つけました:PHP:「'」文字をISO-8859-1からUTF-8に変換する際の問題

サーバーはISO-8859-1を提供していると主張していますが、実際にはWindows-1252であり、問​​題なくUTF-8に変換されます。

于 2011-03-02T20:30:27.847 に答える
0

幸いなことに、ISO 8859-1 は 8 ビット透過です。したがって、コンテンツをiconvmb_convert_encodingまたはutf8_encodeでデコードするだけです。

「I past over the text」が何を意味するのかはわかりませんが、これが本当に ISO 8859-1 として指定された UTF-8 である場合は、中間のテキスト操作をすべて削除してみてください。それでも問題が解決しない場合は、(短い) 入力ドキュメントの例を提供してください。実際には、ISO 8859-1 として指定された UTF-8 ではない可能性があります。

于 2011-03-02T20:27:35.950 に答える