你会推荐哪些扩展,应该如何配置php来创建一个使用utf-8编码的网站。例如。
目前,php似乎并不能很好地处理多字节字符集。到目前为止,我发现mbstring看起来像是一个重要的扩展。
值得这么麻烦吗..?
发布于 2009-10-23 06:55:26
PHP与Unicode内容的假设问题有些被夸大了。自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
使用utf8_*
归类对数据库执行CREATE
操作,让表继承数据库归类并使用"SET NAMES utf8"
启动每个连接
HTML (在HEAD元素中)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
发布于 2017-05-26 19:26:54
我在UTF-8 characters
上也遇到了同样的问题,在实时服务器和临时服务器上一切正常,但有时在我的开发机器上它会崩溃。这种行为非常奇怪,有时字符被正确编码,但在随机页面重新加载时,它开始使用'���เห็นอเวิลด์!���'
或Question mark
'??�เห็นอเวิลด์!???'
中断,或者85%的数据正确呈现'เห็นอเวิลด์!?��'
,但其余15%的数据显示不匹配的字符。我想解决这个问题。所以,从我的清单开始
HTML 1 -检查是否在
中添加了字符头
2 -检查数据是否正确保存在MySQL表中
3 -检查MySQL是否具有正确的UTF-8编码设置
Apache 4 -检查Apache是否具有处理
-8字符集的设置
5 -检查简单的是否可以回显与输入"เห็นอเวิลด์"相同的"เห็นอเวิลด์“输出
6 -检查发送的报头是否正确输出
7 -检查MySQL查询是否获得相同的数据"เห็นอเวิลด์"
8 -检查"เห็นอเวิลด์“是否包含一些html字符,并正确处理它们
9 -检查是否通过任何html编码解码函数传递"เห็นอเวิลด์“
10-检查.htaccess是否全部设置为处理UTF-8字符集
检查上面的所有列表,找出something..breaking的位置。
试一试(我正在使用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');
}
}
最后,别忘了对 answer说谢谢!:)
发布于 2009-10-22 16:40:09
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从电子表格中读取泰文字符。我最终取得了成功,但我仍然不确定我做得对。
https://stackoverflow.com/questions/1605760
复制相似问题