【问题标题】:MYSQL - Turkish characterMYSQL - 土耳其字符
【发布时间】:2012-05-13 17:07:08
【问题描述】:

我从mysql中检索数据

这通常是我在数据库中的

这通常是我在数据库中的

Seçimler, Şirketler ve Siyasi Partiler

打印出来

Se�imler, ?irketler ve Siyasi Partiler

我使用 sql yog 并在我的数据库中更改了一些首选项

我将 Charset 设置为 UTF8,排序规则为 utf8_turkish_ci

但仍会检索类似的数据

Se�imler, ?irketler ve Siyasi Partiler

为什么?有什么问题 ?

【问题讨论】:

标签: mysql


【解决方案1】:

这个问题听起来像是您错过了在某处指定字符编码。要解决这个问题,只需确保您已将字符编码设置为 utf-8everywere(它实际上并不需要是 utf-8,只需 在任何地方都相同 -但是如果你搞砸了一些东西并且无论如何都需要改变一些地方,我强烈建议使用utf-8):

  • 告诉 MySQL 使用 utf-8。为此,请将其添加到您的 my.cnf:

    collation_server = utf8_unicode_ci
    character_set_server = utf8
    
  • 在与 mysql 交互之前,发送这两个查询:

    SET NAMES 'utf8';
    CHARSET 'utf8';
    

    或者,或者,让 php 在打开连接后执行此操作:

    mysql_set_charset('utf8', $conn);
    
  • 将 UTF-8 设置为数据库的默认字符集

    CREATE DATABASE `my_db` DEFAULT CHARACTER SET 'utf8';
    
  • 对表格做同样的事情:

    CREATE TABLE `my_table` (
      -- ...
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
  • 假设客户端是浏览器,将您的内容作为 utf-8 和正确的标头提供:

    header('Content-type: text/html; charset=utf-8');
    

    要确保浏览器能够理解,请添加元标记:

    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    
  • 最后但同样重要的是,告诉浏览器使用 utf-8 提交表单

    <form accept-charset="utf-8" ...>
    

【讨论】:

  • 我真的对 MYSQL 感到惊讶,因为所有功能都设置为 UTF8 。现在,问题解决了。NAMES 设置为 utf8 。
  • SET NAMES 和 CHARSET 查询解决了我的问题。非常感谢!
【解决方案2】:

您还需要在选择查询中提及Charset to UTF8

SET NAMES 'utf8';
CHARSET 'utf8';

【讨论】:

    【解决方案3】:

    对我来说不同的是添加以下几行:

    collat​​ion_server = utf8_unicode_ci

    character_set_server = utf8

    到 my.ini 文件(在文档末尾)我已经尝试了其他所有方法,但在我进行此更改之前它们都失败了。这真的是一个很大的帮助。谢谢 oezi。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 2012-06-28
      相关资源
      最近更新 更多