2012-05-04 117 views
5

我检索从MySQLMYSQL - 土耳其字符

DATAS这通常是我在DB

这通常是我在DB

Seçimler, Şirketler ve Siyasi Partiler 

它打印

Se�imler, ?irketler ve Siyasi Partiler 

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

我设置字符集为UTF8和整理是utf8_turkish_ci

,但仍然取得这样的

Se�imler, ?irketler ve Siyasi Partiler 

为什么DATAS?有什么问题 ?

+0

[从MySQL表转换HTML外国字符为UTF-8字符]的可能重复(http://stackoverflow.com/questions/7003242/converting-html-foreign-characters-from-mysql-tables-to-utf -8个字符) – snnlankrdsm

回答

10

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

  • 告诉MySQL使用utf-8。要做到这一点,把它添加到你的我的。CNF:

    collation_server = utf8_unicode_ci 
    character_set_server = utf8 
    
  • 与MySQL进行交互前,送出这两querys:

    ​​3210

    ,或者让PHP这样做afteropening连接:

    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" ...> 
    
+0

我真的很惊讶的MySQL,因为所有功能设置为UTF-8。现在,问题已解决.NAMES设置为utf8。 – snnlankrdsm

1

你需要提及你的选择查询Charset to UTF8了。

​​3210
1

做什么区别对我来说是增加这些线路:

collat​​ion_server的= utf8_unicode_ci

被character_set_server = UTF8

到my.ini文件(在末尾)我已经尝试了其他一切,但都是失败的,直到我做出这个改变。这真的是一个很好的帮助。谢谢oezi。