【发布时间】:2017-08-30 11:15:15
【问题描述】:
所以我有一个 Excel 表,我保存为 CSV 并编码为 UTF-8 并带有网络选项。当我最初这样做时,它显示了很多我删除的重音字母,这很奇怪,因为内容是一个非常简单的语言列表。我已经删除了所有这些字符并使用带有LOAD DATA 和utf8 字符集的CSV 导入SQL。我已经运行了查询'SET NAMES utf8',并且在phpmyadmin 的操作菜单中将我的数据库排序规则更改为utf8_general_ci。我已经设置了
<meta charset="utf-8"/>
在我的网页顶部,我已经设置了
<?php echo utf8_encode($row['lang']); ?>
在我的网页中回显一串语言。
我得到的是一个从 div 容器中出来的列表。我发现有些空格似乎可以换行,而有些则不能,因此浏览器似乎认为列表是一个长单词,而不是几个分开的。有人有什么想法吗?
示例数据:“英语、西班牙语、法语、俄语”
【问题讨论】:
-
抱歉,您的“示例数据”一点用都没有,而且您的问题描述也不清楚。建议您首先在 HEX 编辑器中打开 CSV,查看您在相关位置实际处理的字节值。
-
mysqls "utf8" 也不是真正的 utf-8,而是一个 3 字节的版本。字符集真的很烦人,将元标记设置为 utf-8 可能还不够,在 http 标头中设置字符集可能会有所帮助。另外,如果您从数据库中读取数据为 utf-8,则不需要再次对其进行 utf8_encode 编码,有些可疑,请找出在哪里!
-
@Jakumi 有趣的是,当我删除 utf8_encode() 函数时,我将空格替换为带问号的菱形。空间问题仍然存在。听起来与这篇文章非常相似:stackoverflow.com/questions/7262687/… 但我的技术还不够了解如何解决它
-
删除重音字母(可能是 Mojibake)已经破坏了内容。可能是进程的某些部分未能指定 utf8。