你会推荐什么样的扩展,应该如何PHP的得到最好的配置为创建使用UTF-8编码适用于所有的网站。 例如...
- 页输出为UTF-8
- 形式提交以UTF-8编码的数据
- 串数据的内部处理(例如说给数据库时)都以UTF-8为好。
看来,PHP并没有真正很好地应对多字节字符集的时刻。 到目前为止,我已经摸索出MBSTRING看起来像一个重要延伸。
是否值得冒这个险..?
你会推荐什么样的扩展,应该如何PHP的得到最好的配置为创建使用UTF-8编码适用于所有的网站。 例如...
看来,PHP并没有真正很好地应对多字节字符集的时刻。 到目前为止,我已经摸索出MBSTRING看起来像一个重要延伸。
是否值得冒这个险..?
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的
CREATE
与数据库utf8_*
整理,让表继承数据库归类,并开始与每个连接"SET NAMES utf8"
HTML(在HEAD元件)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
我正面临同样的问题为UTF-8 characters
,一切工作现场服务器和分期服务器上,但有时它打破我的dev的机器。 行为真是太奇怪了,有时字符是正常,但随机页面重载编码是开始打破与Diamond Charters
' เห็นอเวิลด์! '
或Question mark
'?? เห็นอเวิลด์!???'
或85%的数据被正确地渲染'เห็นอเวิลด์!? '
但休息15%的出无与伦比的字符。 我一直在寻找解决这个问题。 于是,开始与我的清单
1 -检查字头中添加HTML
2 -检查数据正确保存在MySQL表
3 -检查如果MySQL没有UTF-8编码正确设置
4 -检查如果Apache已经设置为处理UTF-8字符集
5 -检查简单的PHP可以回声 “ 看世界”输出与输入相同“看世界”。
6 -检查PHP发送正确的头输出
7 -检查MySQL查询得到同样的数据“ 看世界”。
8 -检查“看世界”有一定的HTML字符,以应对他们正确。
9 -检查“看世界”经过任何HTML编码解码功能 。
10检查所有的.htaccess设置为处理UTF-8字符集
检查所有上面的列表,以找出其中something..breaking。
试用一下(我用笨):
=================================
:: 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');
}
}
而最后不要忘了说谢谢! :)来@djn答案
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读取泰语字符出一个电子表格。 我最终还是成功的,但我仍然不知道我做得对。
如果MBSTRING是不是已经在你的PHP包的一部分,那么我肯定会推荐给你 - 你甚至会想用它来calculationg字符串长度(mb_strlen($ string_var,“utf-8”))的形式输入...否则,你将不再需要,除了有效和适当的HTML什么,正确的HTTP的服务器配置(这样服务器将提供网页unsing UTF-8)和使用UTF-8支持(如记事本++)文本编辑器。
在你的php.ini,设置
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On
这样你就不需要每次的编码参数传递给MB_功能。
2018更新:::
敬请有限,这些php.ini中的条目已被弃用;
;mbstring.internal_encoding = utf-8
;mbstring.http_input =
;mbstring.http_output = utf-8
设置DEFAULT_CHARSET就足够了。
default_charset = "UTF-8"