首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >html页面显示西里尔符号OK,如果包含charset=windows-1251,但不显示utf-8。

html页面显示西里尔符号OK,如果包含charset=windows-1251,但不显示utf-8。
EN

Stack Overflow用户
提问于 2011-11-23 05:53:42
回答 1查看 3.6K关注 0票数 0

好吧..。Html页面和mysql表包含西里尔文本。为了显示西里尔文本Барысаў2000,我使用

代码语言:javascript
复制
<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,所以我从

代码语言:javascript
复制
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

代码语言:javascript
复制
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

现在,我的页面显示问题而不是西里尔符号,而在我的数据库中显示西里尔文本的问题也没有得到解决。谁能告诉我有什么问题?我可以阅读塞尔维亚语和白俄罗斯语(西里尔语)网站,没有任何问题,并且可以在我的本地主机上键入西里尔语文本。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 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也使用此字符集,或者您应该切换到(也在内部,在数据库中)。字符转换和猜测所需的适当编码越少,维护系统就越容易。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8237866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档