4

デンマーク語の文字をデータベースに送信する前にエンコードしたいと思います。

私はこの関数をそれらに適用しようとします:

private function process_array_elements(&$element){
   $element = utf8_encode($element);
   $element = strip_tags(  $element );
   $element = strtolower ( trim ( $element )  );
   $element = mysql_real_escape_string($element);
   return $element;
}

このような:

$this->check_line_two = $this->process_array_elements($e);

これで、文字列をデータベースに送信しようとするたびに、次のようになります。

mysql_query("SET NAMES 'utf8'");
$query="INSERT INTO  result_scanned
          SET line_one= '$this->check_line_one',
              line_two='$this->check_line_two',
              line_three='$this->check_line_three',
              advert_id='$this->advert_id',
              scanned='$this->scan_result'";

私はこれを手に入れます:

 Incorrect string value: '\xE3\x83\xE2\xB8r ...' for column 'line_three' at row 1

テーブルのフィールドのデータ型はUTF-8(utf8_unicode_ci)であるため、同じものを使用して文字列をエンコードする必要があります

このスレッドは私の質問に関連しています:エンコーディングを検出し、すべてをUTF-8にします。

ただし、データベースに挿入する前に、UTF-8に文字をエンコードする方法を知っておく必要があります。そうしないと、前述のようなエラーが発生します。データベースに入れる前に、受け取っている文字の種類を最初に特定する必要があると思います。

4

2 に答える 2

5

utf8_unicode_ciは照合です。文字セットも必要ですutf8

CREATE TABLE someTable DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;

PHPを使用してMySQLに接続する場合は、すべてがUTF-8であることを確認してください。

mysql_connect ("localhost", "DB_USER", "DB_PASSWORD") or die (mysql_error());
mysql_select_db ("DATABASE_NAME") or die (mysql_error());

mysql_query("SET character_set_client=utf8"); 
mysql_query("SET character_set_connection=utf8"); 
mysql_query("SET character_set_database=utf8"); 
mysql_query("SET character_set_results=utf8"); 
mysql_query("SET character_set_server=utf8"); 
mysql_query("SET NAMES 'utf8'");

これは私が運営しているヘブライ語のジブリッシュ翻訳ウェブサイトに接続する方法であり、それは私自身またはユーザーがそれに投げかけるすべてを処理します。

于 2012-06-11T12:08:02.327 に答える
2
Incorrect string value: '\xE3\x83\xE2\xB8r ...' for column

使用した場合にのみこのエラーが発生しますstrtolower

私のデータベースと照合はすべてUTF-8であり、全体的な文字に問題はありません。日本語、ロシア語、中国語などを問題なく処理できる言語データベーステーブルがあります。このエラーは私が試したときにのみポップアップしましたstrtolower

Unicode文字を使用する場合は、PHPのmb_strtolowerを使用する必要があります

于 2012-12-19T08:17:26.090 に答える