我在Windows7上使用Wamp server 2.1,PHP5.3.4,Apache2.2.17,MySql 5.1.53。
httpd.conf: AddDefaultCharset "iso-8859-1“
php.ini: default_charset = "iso-8859-1“
我使用php mysqli类在表中插入数据,使用latin1编码,列使用latin1编码,latin1_swedish_ci排序。在php文件中,我通过meta标记将字符集设置为ISO-8859-1,并使用accept- charset ="ISO-8859-1“属性呈现一个表单。我使用mysqli::set_charset设置到latin1的数据库连接的字符集,但是输入的数据仍然是损坏的。据我所知,数据是有效的latin1字符。
代码:
$dbMain->set_charset('latin1');
$query = "INSERT INTO `table` (" . implode(',', array_keys($data)) . ") VALUES ('" . implode("','", array_values($data)) . "')";
$dbMain->query($query);被破坏的数据:“字符die,Ö,ß,ä,ö,ü,and§. Shop-Produkte für die Elektronik”
当我通过latin1连接读取数据时,它给我的是垃圾(带问号的黑色菱形),而不是我插入的数据。当我通过utf8连接读取数据时,它会显示正确的字符。在SqlYog (MySql客户端)中也是如此。如果我运行"SET NAMES latin1“并浏览表格,我会看到条形字符。如果我运行"SET NAMES utf8“并浏览表格,我会看到正确的文本。这是怎么回事?
更新:
我在MySql client中运行了以下查询:
SET NAMES latin1;
SELECT my_column,HEX(my_column) FROM my_table;得到了这样的结果
|my_column|HEX(my_column)|
--------------------------
| ß | C39F | (entered manually from MySql client)
| � | DF | (entered from php via latin1 connection)我的数据库有没有cucu?
发布于 2013-04-12 22:27:44
有几件事很重要:
你有没有考虑过编码转换?我想帮助你,因为我花了一些时间关于latin2和utf8编码(波兰语),但我需要从你那里获得更多的信息。
发布于 2013-04-29 15:20:17
井!保存的值完全没有问题。在这两种情况下,都是检索导致了问题。
对于MySql客户端,问题是只有当我使用utf8连接作为客户端的默认连接时,客户端才会显示存储的正确值。客户端的UI可能只使用utf8编码。
在HTML响应的情况下,PHP文件的编码是ISO-8859-1,但是.html模板文件是以UTF8编码保存的。该网站使用传统的解析器来解析模板,因此当它从UTF-8文件中获取内容并进行解析时,ISO-8859-1数据被破坏。将.html文件的编码改为ISO8859-1解决了这个问题。
谢谢你们帮我的忙。我真的很感激。我希望你不要生气
https://stackoverflow.com/questions/15973635
复制相似问题