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

您将推荐哪些扩展,以及如何最好地配置php以创建一个对所有内容都使用utf-8编码的网站。例如...

  • 页面输出为utf-8

  • 表单提交以utf-8编码的数据

  • 字符串数据的内部处理(例如,与数据库对话时)也都在utf-8中。

看来php目前无法很好地应对多字节字符集。到目前为止,我已经知道mbstring看起来像是一个重要的扩展。

这值得麻烦吗..?


MMMHUHU
浏览 326回答 3
3回答

慕森王

带有Unicode内容的PHP的假定问题有些夸大了。自1998年以来,我一直在从事多语言网站的开发,但直到我在某个地方(很多年以后才知道)之前,我才知道可能存在问题。这对我来说很好:Apache配置(在httpd.conf或.htaccess中)AddDefaultCharset utf-8PHP(在php.ini中)default_charset = "utf-8"mbstring.internal_encoding=utf-8mbstring.http_output=UTF-8mbstring.encoding_translation=Onmbstring.func_overload=6&nbsp;的MySQLCREATE使用utf8_*排序规则的数据库,让表继承数据库排序规则并使用以下命令开始每个连接"SET NAMES utf8"HTML(在HEAD元素中)<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

森林海

我遇到了相同的问题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-8mbstring.http_output=UTF-8mbstring.encoding_translation=Onmbstring.func_overload=6&nbsp;=================================:: .htaccess Settings::=================================DefaultLanguage en-USAddDefaultCharset 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')){&nbsp; &nbsp; function safe_utf_string($utf8string= ''){&nbsp; &nbsp; &nbsp; &nbsp; $utf8string = htmlspecialchars($utf8string, ENT_QUOTES, 'UTF-8');&nbsp; &nbsp; &nbsp; &nbsp; return mb_convert_encoding($utf8string, 'UTF-8');&nbsp; &nbsp; }}

守着星空守着你

PHP的应付就好!您应该将php.ini的“ default_charset”参数设置为'utf-8'。确保:<head>&nbsp; <meta http-equiv="Content-Type"&nbsp; &nbsp; content="text/html; charset=utf-8"&nbsp; &nbsp; />在您服务的每个页面的顶部。有一些问题领域:数据库-确保默认情况下将它们配置为使用utf-8或进入痛苦的世界。IDE /编辑器-许多编辑器不太支持utf-8。我通常使用vim,但不是,但这从来不是一个大问题。文档-整个下午花了整整一个时间,让php从电子表格中读取泰语字符。我最终成功了,但仍然不确定我做对了什么。
打开App,查看更多内容
随时随地看视频慕课网APP