使用PHP和MySQL显示日语字符时出现问题
我正在使用PHP连接到一个MySQL数据库来创建一个XML文件。除了字符编码之外,一切都正常。我需要日语和英语字符,所以很明显我选择了UTF-8。唯一的问题是数据库中的日文字符显示不正确 数据库和表的排序规则设置为UTF8\u general\u ci,MySQL连接排序规则也是如此 我的php文件定义在两个不同的位置使用UTF-8(并保存在UTF-8中,不带BOM),一次在标题中,使用以下行: 标题(“内容类型:text/xml;字符集=utf-8”); 它定义它的另一个位置是在XML输出文件中 作为测试,我让php文件仅从代码中编写一些日语字符,因此不是来自数据库。这显示正确(可以在这里看到…最后5个条目有一些日语,后面有问号,因为日语是来自数据库的) 所以问题很可能是数据库,但在我看来一切都是正确的使用PHP和MySQL显示日语字符时出现问题,php,mysql,xml,utf-8,Php,Mysql,Xml,Utf 8,我正在使用PHP连接到一个MySQL数据库来创建一个XML文件。除了字符编码之外,一切都正常。我需要日语和英语字符,所以很明显我选择了UTF-8。唯一的问题是数据库中的日文字符显示不正确 数据库和表的排序规则设置为UTF8\u general\u ci,MySQL连接排序规则也是如此 我的php文件定义在两个不同的位置使用UTF-8(并保存在UTF-8中,不带BOM),一次在标题中,使用以下行: 标题(“内容类型:text/xml;字符集=utf-8”); 它定义它的另一个位置是在XML输出文件
有什么想法吗?实际上刚刚发布了这个-
我倾向于发现解决很多问题的方法是
mysql_query("SET NAMES 'utf8'");
在执行任何查询之前
文档建议您使用mysql\u set\u charset
,但我经常看到缺少该函数
if( function_exists('mysql_set_charset') ){
mysql_set_charset('utf8', $db_con);
}else{
mysql_query("SET NAMES 'utf8'", $db_con);
}
如果您使用对象进行db访问,那么下面是适合我的解决方案
class DB
{
public $Link;
private static $_instance;
public static function instance()
{
if (NULL === self::$_instance) {
self::$_instance = new DB;
}
return self::$_instance;
}
private function __construct()
{
$host = 'localhost';
$user = 'your_user_name';
$pass = 'your_password;
$db = 'db_name';
$this->Link = new mysqli($host, $user, $pass, $db);
$this->Link->set_charset('utf8');
}
}
谢谢,干得很出色。我已经为此工作了大约3个小时,但毫无进展。