【问题标题】:JSON Enconding IssueJSON 编码问题
【发布时间】:2012-12-12 08:48:59
【问题描述】:

您好,我正在使用 phonegap 开发移动应用程序,并且正在通过 ajax (jsonp) 查询 MySQL 数据库。但是,当返回特殊字符时出现问题,因为它们显示为“?”而不是例如Ż。

目前在我的 PHP 中我已经添加了这个,但是它并没有起到作用: header('content-type: application/json; charset=UTF-8');

是否有人知道任何其他可以使用的字符集,其中包括上述特殊字符?

【问题讨论】:

    标签: php javascript jquery html cordova


    【解决方案1】:

    第一件事就是第一

    a) 修复数据库表 确保使用正确的字符集定义的表 例如

    CREATE TABLE `types` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8
    

    b) 连接到数据库后确保以下事项

    SET NAMES 'utf8';

    [我也跟着跑]

     SET  character_set_client  ='utf8',
     character_set_connection ='utf8',
     character_set_database  ='utf8',
     character_set_results   ='utf8',
     character_set_server    ='utf8',
     collation_connection    ='utf8_general_ci',
     collation_database      ='utf8_general_ci',
     collation_server        ='utf8_general_ci'
    

    c) 最后设置正确的content type for the html page

    希望对你有帮助

    【讨论】:

    • 因为我有一个 PDO,对于你答案的 (b) 部分,我会设置字符集如下吗? $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET character_set_client = utf8, character_set_connection = utf8, character_set_database = utf8, character_set_results = utf8, character_set_server = utf8, collat​​ion_connection = utf8_general_ci, collat​​ion_database = utf8_general_ci, collat​​ion_server = utf8_general $db = new PDO($dsn, $username, $password, $options);
    • 我从未使用过 PDO ,并且该 init 命令似乎与 php 5.3 stackoverflow.com/questions/2424343/… 存在错误。因此,最好的选择是运行:stackoverflow.com/questions/4978481/pdoexec-or-pdoquery
    【解决方案2】:

    您正在使用 MySQL 数据库?所以尝试为数据库连接设置一个 utf8 字符集,例如:

    $conn = mysql_connect('localhost','user1','pass1',TRUE); 
    mysql_set_charset('utf8',$conn); 
    

    或者试试 UTF-8 编码

    string utf8_encode ( string $data )
    

    参数:

    data
    An ISO-8859-1 string.
    

    返回值:

    Returns the UTF-8 translation of data.
    

    【讨论】:

      【解决方案3】:

      根据 JSON 实现标准,所有 JSON 数据必须以 UTF 格式编码,默认格式为 UTF-8。 但您始终可以使用其他 UTF 格式,例如 UTF-32BE、UTF-16BE、UTF-32LE、UTF-16LE。

      有关详细标准和信息,请访问ietf standard

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多