xx19941215/light-tips

PHP最佳实践之多字节字符串、字符编码

xx19941215 opened this issue · 0 comments

多字节字符串

1).PHP假设字符串中的每一个字符都是八位字符,占用一个字节的内存。但是,你有可能会遇到多字节字符串。
2).这里所说的多字节字符串是指不在传统的128个ASCII字符集中的字符。如果使用PHP原生的字符串函数处理这些多字节Unicode字符串,会得到意外的错误。
3).安装mbstring扩展来处理这些问题。例如使用处理多字节的字符串函数mb_strlen()函数来替代原生的strlen()函数。

字符编码

1).一定要知道数据的字符编码。
2).使用UTF-8字符编码存储数据。
3).使用UTF-8字符编码输出数据。
4).mbstring扩展不仅可以处理Unicode字符串,还可以在不同的字符编码之间转换多字节字符串。

输出UTF-8数据

1).在php.ini中作如下配置

default_charset = "UTF-8";

2)例如header函数明确指定字符集,在PHP返回的响应中,Content-Type首部默认也使用了这个默认值

<?php
header('Content-Type: application/json;charset=utf-8');

3).只要PHP已经明确返回了输出,就不能使用header()函数了
4).建议在HTML文档的头部也加入响应的meta标签

<meta charset="UTF-8"/>