utf-8为变长编码, 编码规则如下:
Binary | Hexadecimal | Decimal | Width |
---|---|---|---|
00000000-01111111 | 00-7F | 0-127 | 1 byte |
11000010-11011111 | C2-DF | 194-223 | 2 bytes |
11100000-11101111 | E0-EF | 224-239 | 3 bytes |
11110000-11110100 | F0-F4 | 240-244 | 4 bytes |
PHP中有以下的函数在操作utf-8字符串时会不安全,具体参考此链接:http://www.phpwact.org/php/i18n/utf-8和http://www.phpwact.org/php/i18n/charsets。
不过所以的问题在PHP6中将都会成为过去,PHP6中会原生的支持utf-8字符集,不过感觉慢了点。觉得.Net和Java早已解决了这类问题,毕竟为了支持多国语言,UTF-8必将成为Web编码的标准。