The*_*ets 10 php utf-8 multibyte
这是我的PHP代码:
<?php
$result = '';
$str = '???????? ???????';
for ($y=0; $y < strlen($str); $y++) {
$tmp = mb_substr($str, $y, 1);
$result = $result . $tmp;
}
echo 'result = ' . $result;
Run Code Online (Sandbox Code Playgroud)
输出是:
Тугайный Ñоловей
Run Code Online (Sandbox Code Playgroud)
我能做什么?我必须放入$resultMySQL数据库.
Cap*_*ule 15
您的文件的编码是什么?它也应该是UTF8.什么是您的http服务器的默认字符集?它也应该是UTF-8.
编码仅在以下情况下有效:
使用数据库时,还必须为数据库字段设置正确的编码以及 MySQL客户端与服务器通信的方式(请参阅参考资料mysql_set_charset()).只有字段是不够的,因为您的MySQL客户端(在本例中为PHP)可以默认设置为ISO并重新解释数据.所以你最终用UTF8 DB - > ISO客户端 - >注入UTF8 PHP脚本.难怪为什么它最后搞砸了:-)
如何使用正确的字符集来提供文件?
header('Content-type: text/html; charset=utf-8') 是一个解决方案
包含的.htaccess文件AddDefaultCharset UTF-8是另一个
HTML元内容类型也可能有效,但使用HTTP标头发送此信息总是更好.
PS:你也必须使用mb_strlen()因为strlen()在UTF8字符串上可能会报告超过实际长度.