这是我的PHP代码:
<?php
$result = '';
$str = 'Тугайный соловей';
for ($y=0; $y < strlen($str); $y++) {
$tmp = mb_substr($str, $y, 1);
$result = $result . $tmp;
}
echo 'result = ' . $result;
输出结果为:
Тугайный Ñоловей
我该怎么办?我必须将$result
放入MySQL数据库。
答案 0 :(得分:15)
您的文件的编码是什么?它也应该是UTF8。什么是您的http服务器的默认字符集?它也应该是UTF-8。
编码仅在以下情况下有效:
使用数据库时,还必须按照MySQL客户端与服务器通信的方式为数据库字段和设置正确的编码(请参阅mysql_set_charset()
)。只有字段是不够的,因为您的MySQL客户端(在本例中为PHP)可以默认设置为ISO并重新解释数据。所以你最终得到了UTF8 DB - &gt; ISO客户 - &gt;注入UTF8 PHP脚本。难怪为什么它最后搞砸了: - )
如何使用正确的字符集来提供文件?
header('Content-type: text/html; charset=utf-8')
是一种解决方案
包含AddDefaultCharset UTF-8
的.htaccess文件是另一个
HTML元内容类型也可能有效,但使用HTTP标头发送此信息总是更好。
PS:您还必须使用mb_strlen()
,因为UTF8字符串上的strlen()
可能会报告超过实际长度。
答案 1 :(得分:3)
我想,你的代码在windiws-1251
,因为它是俄语:)
将您的字符串转换为utf-8:
$str = iconv('windows-1251', 'utf-8', $str);
答案 2 :(得分:2)
如果您要发送混合数据并且不想使用php标头指定utf-8,则可以将此html添加到您的页面:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
答案 3 :(得分:1)
如果您的数据库是UTF-8,则可以使用mysql。
对于您的回声,如果您在网站上进行,请将其放在首页:
header('Content-Type: text/html; charset=UTF-8');
答案 4 :(得分:0)
尝试一下:
header('Content-Type: text/html; charset=UTF-8');
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");
//print "$name_field\n$data";
// با این کد درست شد
print chr(255) . chr(254) . mb_convert_encoding("$name_field\n$data", 'UTF-16LE', 'UTF-8');
答案 5 :(得分:-1)
只需在与服务器连接后的开头添加以下行:
mysqli_set_charset($conn,"utf8");
答案 6 :(得分:-1)
如果您只是使用不带html标头等的php echo,那么对我来说效果很好。
$ connect = mysqli_connect($ host_name,$ user_name,$ password,$ database); mysqli_set_charset($ connect,“ utf8”);