2

そのため、文字セット utf8 を使用して Web サイトから情報とデータをスクレイピングするようにクローラーをプログラムしました。しかし、コンテンツを MySQL に保存しようとすると、スペイン語の文字などの一部の特殊文字が MySQL で正しく表示されませんでした。

これが私がやったことです:

  1. header("Content-Type: text/html; charset=utf-8")PHPを入れる
  2. MySQL のすべての文字セットを次のように設定しますutf8-unicode-ci
  3. $conn->query("SET NAMES 'utf8'")接続時にこれを持ってください
  4. 解析したhtmlがutf-8でエンコードされていることを再確認しました

では、ここで起こりうる問題にはどのようなものがあるでしょうか。

4

3 に答える 3

1

マルチバイト文字の管理を想定していない関数を使用してクローラーをコーディングした可能性があります。
たとえば、mb_strlen の代わりに strlen を使用します。

入れてみてください:

mb_internal_encoding("UTF-8");

php coce の最初の行として、それぞれの mb バージョンでいくつかの関数を変換する必要があるかどうかを確認します。マルチバイト文字列参照を見てください

最後のチャンスとして、文字列を mysql に挿入する直前にiconv 関数をいじることができます。
次のようなもの:

$utf8_string = iconv(iconv_get_encoding($string), "UTF-8", $string);

トリックを行う必要があります

于 2012-09-26T18:50:28.797 に答える
1

データベースにデータが間違って保存されていないかどうかを確認することから始めます。この場合、問題はクローラーにあります。そうでなければ、問題はあなたのプレゼンテーションにあります。

これをテストするには、専用の mysql クライアント (コマンド ライン クライアントなど) を使用してデータを検査することをお勧めします。

于 2012-09-26T18:41:03.200 に答える
0

これをヘッダーに追加し始めるまで、UTF8の問題に対処するために髪の毛を抜いたことを覚えています。

setlocale(LC_ALL, 'en_US.UTF-8');
于 2012-09-26T18:59:45.420 に答える