如何在PHP/MySQL/Apache中正确处理国际字符

ags*_*mek 2 php mysql apache unicode

我需要在PHP中创建一个可以处理所有地方的所有Unicode字符的应用程序 - 编辑字段,静态HTML,数据库.有人可以告诉我需要设置/用于实现这一目标的所有参数/功能的完整列表吗?

Pal*_*tir 7

阿帕奇

必须未设置服务器编码,或将其设置为UTF-8.这是通过apache AddDefaultCharset指令完成的.这可以转到virtualhost或常规文件(请参阅文档).

AddDefaultCharset utf-8
Run Code Online (Sandbox Code Playgroud)

MySQL的

  • 将数据库的排序规则设置为UTF-8
  • 设置连接编码.它可以像有人用mysqli_set_charset说的那样完成,或者在连接之后发送:
    SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'

PHP

1-您应该通过页面上的元标记或通过PHP标头将页面的HTML字符集设置为UTF-8:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-or-
    header('Content-type: text/html; charset=utf-8');

2-你应该总是使用mb*版本的字符串相关函数,例如,mbstrlen而不是strlen来获取字符串的字符串长度.

这应该允许您从页面到数据的任何地方都有UTF-8.您可以进行的测试:使用firefox右键单击页面上的任意位置,然后选择显示页面信息.有效编码列在该页面中.

  • 注意:您提供的text/*品种的所有页面都应该是UTF-8,**包括JavaScript文件**.如果页面是UTF-8而JS文件不是,则某些浏览器会出现问题. (2认同)