0

これは私のローカルシナリオです:

いくつかの CSV ファイルを読み取り、コンテンツをローカルの MYSQL データベースに書き込むアプリケーションがあります。コンテンツには、「ß」や「Ä」などのウムラウトが含まれています。ローカルではすべて正常に動作し、ウムラウトはデータベースに書き込まれ、データベースを読み取るアプリ内にも正しく表示されます。

このシナリオを amazon クラウドに移動したところ、突然 "ß" が "?" になりました。デシベルで。プログラムが CSV ファイルから読み取る内容を確認しましたが、まだ「ß」のままです。ですから、データベースへの書き込みに違いないと思いますが、質問は、これがローカルで機能しているのに、クラウドサーバーでは機能していないのはなぜですか? これはデータベースの問題ですか、それとも PHP の問題ですか?

ありがとう!:)

4

4 に答える 4

2

両方のデータベースでエンコードを確認しましたか? ほとんどの場合、問題がある可能性があります。

于 2012-07-03T08:36:09.747 に答える
1

データベースを UTF-8 でエンコードする必要があります。

これは、MySQL でエンコーディングがどのように機能するか、およびそれを修正する複数の方法を説明する優れた概要記事です。

http://www.bluebox.net/news/2009/07/mysql_encoding/

于 2012-07-03T08:37:45.013 に答える
0

それはすべて、CSV ファイルをアップロードする方法によって異なります。
データを MySQL サーバーに書き込む前に、次のコードが役立つ場合があります。

$Notes = $_POST['Notes']; // or contents of the CSV file- but split the data first according to newline etc.  

$charset = mysqli_character_set_name($DBConnect);  
printf ("To check your character set but not necessary %s\n",$charset);  

$Notes = str_replace('"', '"', $Notes);  //double quotes for mailto: emails.  
$von = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é");  //to correct double whitepaces as well
$zu  = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é");  
$Notes = str_replace($von, $zu, $Notes);  
echo " Notes:".$Notes."<br>" ;  
$Notes = mysqli_real_escape_string($link, $Notes); //for mysqli DB connection.

echo " Notes:".$Notes ;  
于 2014-01-02T12:21:34.533 に答える