为什么扩展的ascii字符(â,é等)被替换为<?>字符?
我附加了一张图片…但是我使用PHP从MysqL中提取数据,其中一些位置有扩展字符…我使用的是字体Arial.
你可以在这里看到截图:http://img269.imageshack.us/i/funnychar.png/
在建议之后仍然发生,这是我做的:
我的firefox(view->编码)在添加行后设置为UTF-8,但是,选项标签内的文本仍然显示有趣的字符而不是实际的重音字符.我现在应该寻找什么?
ini_set( 'default_charset', 'UTF-8' );
$db->query("SET NAMES utf8;");
我将所有表格更改为UTF-8并重新插入所有数据(浪费时间),因为它从未帮助过.之前是latin1.
STATUS也在报告:
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/run/MysqLd/MysqLd.sock
Uptime: 4 days 20 hours 59 min 41 sec
看一下页面的来源,我明白了
< option value =“Br l Lake”> Br l 湖
好的 – 新的更新 –
我将PHP和HTML中的所有内容更改为:
和
header(‘Content-Type:text / html; charset = latin1’);
现在它的工作原理是什么?如何将其全部转换为UTF-8?
解决方法:
这就是浏览器在不知道用于角色的编码时所做的事情.确保在headers或markup Meta中指定发送给客户端的文本的编码类型.
在HTML中:
<Meta http-equiv="Content-Type" content="text/html; charset=utf-8">
header('Content-Type: text/html; charset=utf-8');
我假设你想要UTF-8编码.如果您的网站使用其他文字编码,则应将UTF-8替换为您正在使用的编码.
关于使用HTML指定编码的一件事是,浏览器在看到Content-Type元标记后将重新开始呈现页面,因此您应该包含< Meta />在< head />之后立即标记在您的页面中标记,以便浏览器不再进行任何额外的处理.
另一个常见的字符集是“iso-8859-1”(Basic Latin),您可能希望使用它而不是UTF-8.您可以在character encodings and the web这篇精彩的文章中找到更多详细信息.如果您需要特定类型,还可以获得详尽的list of character encodings here.
如果没有别的办法,另一种(罕见的)可能是您的计算机上没有安装显示该页面所需字符的字体.我已经尝试了repeating your results on my own server但没有运气,可能是因为我的机器上安装了很多字体,因此浏览器总是可以用一种字体替换另一种字体的不可用字符.
通过进一步调查我注意到的是,如果文本以不同于浏览器报告的编码的编码发送,则Unicode字符可以意外地呈现.为了解决这个问题,我使用了HTML character entity representation的特殊字符,所以â成为â在我的HTML和é变成é.一旦我这样做,无论我报告的编码是什么,我的角色都能正确呈现.
显然,您不希望将数据库修改为HTML编码Unicode字符.如果你必须这样做,你最好的选择是使用PHP函数,htmlentities()
.你应该在你希望有Unicode字符的任何数据驱动文本上使用这个函数.这可能很烦人,但如果指定编码不’ t help,这是强制Unicode字符工作的最后一招.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。