代码之家  ›  专栏  ›  技术社区  ›  Hammerite

设置连接字符集会产生违反直觉的结果

  •  0
  • Hammerite  · 技术社区  · 15 年前

    utf8 使用 mysqli_set_charset ,结果是输出显示不正确(实际上,似乎页面的字符编码被错误识别),而如果 设置连接字符集,它将正确显示。

    utf8型 Página principal 如果我 不要 设置连接字符集。如果我 设置连接字符集,它显示为 Página principal .

    详细信息:我用来测试这种行为的PHP脚本在 <head> 章节:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    我已确定主机上新连接的默认字符集为 latin1 . 我连接的数据库有默认字符集 utf8型 . 以下是用于创建数据库链接的代码:

    $cxn = @mysqli_connect('localhost', $db_user, $db_password, $db_database) or die('Failed to connect to the database.');
    mysqli_set_charset($cxn, 'utf8');
    mysqli_query($cxn, 'SET SESSION sql_mode = \'TRADITIONAL\'');
    

    ISO-8859-1 Página principal .

    1 回复  |  直到 15 年前
        1
  •  1
  •   Robus    15 年前

    这可能是因为插入数据时字符编码不同,因此可能存储在错误的编码中(表编码是否设置为utf8?)。检查新插入的数据是否返回正常((使用utf8连接插入的数据)