Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和MySQL显示日语字符时出现问题_Php_Mysql_Xml_Utf 8 - Fatal编程技术网

使用PHP和MySQL显示日语字符时出现问题

使用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输出文件

我正在使用PHP连接到一个MySQL数据库来创建一个XML文件。除了字符编码之外,一切都正常。我需要日语和英语字符,所以很明显我选择了UTF-8。唯一的问题是数据库中的日文字符显示不正确

数据库和表的排序规则设置为UTF8\u general\u ci,MySQL连接排序规则也是如此

我的php文件定义在两个不同的位置使用UTF-8(并保存在UTF-8中,不带BOM),一次在标题中,使用以下行: 标题(“内容类型:text/xml;字符集=utf-8”); 它定义它的另一个位置是在XML输出文件中

作为测试,我让php文件仅从代码中编写一些日语字符,因此不是来自数据库。这显示正确(可以在这里看到…最后5个条目有一些日语,后面有问号,因为日语是来自数据库的)

所以问题很可能是数据库,但在我看来一切都是正确的


有什么想法吗?

实际上刚刚发布了这个-


我倾向于发现解决很多问题的方法是

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个小时,但毫无进展。