ÆØÅ 在 MySQL 中无法正确显示
Posted
技术标签:
【中文标题】ÆØÅ 在 MySQL 中无法正确显示【英文标题】:ÆØÅ doesn't display correctly in MySQL 【发布时间】:2012-06-19 21:17:35 【问题描述】: 【参考方案1】:如果您的 php 文件已经是 UTF-8 编码,您应该告诉您的数据库,您需要 UTF-8。无需摆弄 mysql 的配置,只需告诉您的连接对象,您希望使用哪种字符集,数据库会为您完成剩下的工作。
这是一个mysqli连接对象的例子:
$db = new mysqli($dbHost, $dbUser, $dbPw, $dbName);
$db->set_charset("utf8");
之后您的查询将返回 UTF-8 编码的结果。
【讨论】:
这确实有效!我看到它是 utf8,但为什么 phpMyAdmin 中没有 utf8 作为排序规则的替代品?我将如何正确地做到这一点?我想最好首先正确保存数据?对速度有影响吗? @Hogwarts 的学生 - 排序规则不决定字符串的存储方式,它只决定两个字符串的比较方式(至少我是这么理解的)。 是的,我现在正在阅读它。嗯,为什么他们不能像我们在 html 中那样拥有一个主字符集:UTF-8... @霍格沃茨的学生——我自己对此并不完全确定。当我在 phpMyAdmin 中创建一个新数据库并为 db 选择排序规则utf8_unicode_ci
时,db 的导出将包含 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
,所以我假设它确实使用字符集 UTF-8 存储。但是,为客户端(PHP 连接对象)设置字符集是另一回事,并且应该独立于服务器具有的任何默认设置。
嗯,所以最好还是让 MySQL 正确,因为这总是要与 æøå 一起工作。【参考方案2】:
SET NAMES 'charset_name'
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
【讨论】:
将 'charset_name' 替换为您正在使用的字符集,例如:SET NAMES utf8; 您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在 'SET NAMES 'utf8'' 附近使用的正确语法【参考方案3】:首先,您需要确定是浏览器字符集错误,还是mysql。 尝试将浏览器中的字符集交换为 utf8,或者如果它已经是 iso-8859。
如果这不能解决问题,请尝试通过执行更改查询中的字符集
SET CHARACTER SET charsetname;
【讨论】:
以上是关于ÆØÅ 在 MySQL 中无法正确显示的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 xsl:sort 与外来字符(即“æ”、“ø”和“å”)
返回的 JSON 结果中的 Æøå - 数据看起来不像它应该的那样