好吧..。Html页面和mysql表包含西里尔文本。为了显示西里尔文本Барысаў2000,我使用
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />在网页上。为了将这个单词存储在MySQL表中,使用了MySQL排序规则(我已经阅读了一些主题,据我了解,建议使用utf8_unicode_ci来存储西里尔符号)。但是,我在使用phpMyAdmin时实际看到的是,文本Барысаў2000存储在db中,Барысаў2000被存储在数据库中,这就是我希望解决的问题。(POST方法+转义危险符号用于将用户的文本保存到db中)。但是,当您选择该数据并在html页面上显示它时,它看起来很好:Барысаў2000。
phpMyAdmin如何为我显示它的问题直到今天才困扰我。今天我试着解决这个问题。
我猜到我必须在任何地方使用utf-8,所以我从
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />至
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>现在,我的页面显示问题而不是西里尔符号,而在我的数据库中显示西里尔文本的问题也没有得到解决。谁能告诉我有什么问题?我可以阅读塞尔维亚语和白俄罗斯语(西里尔语)网站,没有任何问题,并且可以在我的本地主机上键入西里尔语文本。
谢谢。
发布于 2011-11-24 13:51:03
phpMyAdmin的问题可能是由错误的字符编码猜测引起的。如果您使用字符集Барысаў2000对文本windows 1251进行编码,最终将得到一个字节流C1 E0 F0 FB F1 E0 A2 32 30 30 30 0D 0A。如果将此字节流解释为使用ISO8859-1或windows-1252编码的文本,则结果将显示为Áàðûñà¢2000。
这表明数据库中的字符串实际上是用windows-1251编码存储的。然后,如果您输出这些字符串,并且只声明它使用了UTF-8编码(不进行任何编码),结果将是垃圾文本,因为该字节流包含无效的UTF-8字节序列。
您应该继续使用windows-1251字符集为您的页面服务,并告诉phpMyAdmin也使用此字符集,或者您应该切换到(也在内部,在数据库中)。字符转换和猜测所需的适当编码越少,维护系统就越容易。
https://stackoverflow.com/questions/8237866
复制相似问题