首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何最好地配置PHP以处理UTF-8网站

如何最好地配置PHP以处理UTF-8网站
EN

Stack Overflow用户
提问于 2009-10-22 16:29:18
回答 6查看 60K关注 0票数 20

你会推荐哪些扩展,应该如何配置php来创建一个使用utf-8编码的网站。例如。

  • 页面输出采用utf-8格式
  • 表单以utf-8编码提交数据
  • 字符串数据的内部处理(例如与数据库对话时)也都采用utf-8格式。

目前,php似乎并不能很好地处理多字节字符集。到目前为止,我发现mbstring看起来像是一个重要的扩展。

值得这么麻烦吗..?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-10-23 06:55:26

PHP与Unicode内容的假设问题有些被夸大了。自1998年以来,我一直在做多语言网站,直到我在某个地方读到过这个问题-多年后的网站,我才知道可能会有问题。

这对我来说很好用:

Apache配置(在httpd.conf或.htaccess中)

代码语言:javascript
复制
AddDefaultCharset utf-8

PHP (在php.ini中)

代码语言:javascript
复制
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元素中)

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

Stack Overflow用户

发布于 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):

代码语言:javascript
复制
=================================
:: 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说谢谢!:)

票数 4
EN

Stack Overflow用户

发布于 2009-10-22 16:40:09

php可以很好地应对!

您应该将php.ini "default_charset“参数设置为”utf-8“。

请确保:-

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

位于您提供的每个页面的顶部。

这里有几个问题:

数据库--确保默认情况下它们被配置为使用utf-8,否则将进入痛苦的世界。

IDE/编辑器--很多编辑器都不能很好地支持utf-8。我通常使用vim,它不会,但这从来不是一个大问题。

文档--只花了一个下午的时间让php从电子表格中读取泰文字符。我最终取得了成功,但我仍然不确定我做得对。

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

https://stackoverflow.com/questions/1605760

复制
相关文章

相似问题

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