0

这是我的本地场景:

我有一个应用程序,它读取一些 CSV 文件并将内容写入我的本地 MYSQL 数据库。内容包含变音符号,例如“ß”或“Ä”。本地一切正常,变音符号被写入数据库,并在读取数据库的应用程序内显示正确。

现在我把这个场景移到亚马逊云上,突然“ß”变成了“?” 在数据库中。我检查了程序从 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

您可以使用:

iconv("UTF-8", "ISO-8859-1", $stringhere);

这将为您转换字符串

于 2013-05-14T09:18:51.417 回答
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 回答