3 回答
![?](http://img1.sycdn.imooc.com/5458463b0001358f02200220-100-100.jpg)
TA贡献1777条经验 获得超3个赞
带有Unicode内容的PHP的假定问题有些夸大了。自1998年以来,我一直在从事多语言网站的开发,但直到我在某个地方(很多年以后才知道)之前,我才知道可能存在问题。
这对我来说很好:
Apache配置(在httpd.conf或.htaccess中)
AddDefaultCharset utf-8
PHP(在php.ini中)
default_charset = "utf-8"
mbstring.internal_encoding=utf-8
mbstring.http_output=UTF-8
mbstring.encoding_translation=On
mbstring.func_overload=6
的MySQL
CREATE使用utf8_*排序规则的数据库,让表继承数据库排序规则并使用以下命令开始每个连接"SET NAMES utf8"
HTML(在HEAD元素中)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
TA贡献2011条经验 获得超2个赞
我遇到了相同的问题UTF-8 characters,一切都在实时服务器和登台服务器上运行,但是有时它在我的开发机上坏了。行为真是太奇怪了,有时字符进行编码正确,但随机页面重载它开始打破Diamond Charters '���เห็นอเวิลด์!���'或Question mark '??�เห็นอเวิลด์!???'或85个%的数据是正确的渲染'เห็นอเวิลด์!?��',但休息15%的出无与伦比的字符。我一直在寻找解决问题的方法。所以,从我的清单开始
1-检查是否在HTML中添加了字符标题
2-检查数据是否正确保存在MySQL表中
3-检查MySQL是否为UTF-8设置了正确的编码
4-检查Apache是否具有设置以处理UTF-8字符集
5-检查简单的PHP是否可以回显与输入“เห็นอเวิลด์”相同的“เห็นอเวิลด์”输出
6-检查PHP是否发送正确的Headers输出
7-检查MySQL查询是否获得相同的数据“เห็นอเวิลด์”
8-检查“เห็นอเวิลด์”是否有一些html字符,请正确处理
9-检查“เห็นอเวิลด์”是否通过任何html编码解码功能
10-检查.htaccess是否已全部设置为处理UTF-8字符集
检查以上所有列表,找出出现问题的地方。
试试看(我正在使用Codeigniter):
=================================
:: PHP ini Settings::
=================================
default_charset = "utf-8"
mbstring.internal_encoding=utf-8
mbstring.http_output=UTF-8
mbstring.encoding_translation=On
mbstring.func_overload=6
=================================
:: .htaccess Settings::
=================================
DefaultLanguage en-US
AddDefaultCharset UTF-8
=================================
:: HTML Header Page::
=================================
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
=================================
:: PHP Codeigniter index.php ::
=================================
header('Content-Type: text/html; charset=UTF-8');
=================================
:: Codeigniter config.php ::
=================================
$config['charset'] = 'UTF-8';
=================================
:: Codeigniter database.php ::
=================================
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
=================================
:: Codeigniter helper function (optional)
=================================
if(!function_exists('safe_utf_string')){
function safe_utf_string($utf8string= ''){
$utf8string = htmlspecialchars($utf8string, ENT_QUOTES, 'UTF-8');
return mb_convert_encoding($utf8string, 'UTF-8');
}
}
![?](http://img1.sycdn.imooc.com/5458689e000115c602200220-100-100.jpg)
TA贡献1799条经验 获得超8个赞
PHP的应付就好!
您应该将php.ini的“ default_charset”参数设置为'utf-8'。
确保:
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8"
/>
在您服务的每个页面的顶部。
有一些问题领域:
数据库-确保默认情况下将它们配置为使用utf-8或进入痛苦的世界。
IDE /编辑器-许多编辑器不太支持utf-8。我通常使用vim,但不是,但这从来不是一个大问题。
文档-整个下午花了整整一个时间,让php从电子表格中读取泰语字符。我最终成功了,但仍然不确定我做对了什么。
- 3 回答
- 0 关注
- 339 浏览
添加回答
举报