繁体   English   中英

UTF-8 字符集错误地显示法语字符。

[英]UTF-8 Charset displaying french characters incorrectly.

我正在执行以下步骤将数据导入我的电子商务商店:

  1. 在excel中将excel表转换为csv
  2. 在记事本++中打开csv文件并转换为UTF-8
  3. 在phpmyadmin中导入csv文件

如果我查看网页的前端,法语字符显示为 ?。 页面的字符集是 utf-8

如果我将字符集更改为 iso-8859-1,一切都会正确显示。

如果我检查 phpmyadmin 中的项目,则重音显示正确。

为什么 utf-8 不能正确显示它们? 我认为它应该显示é等。

如果我转到网站的后端并编辑产品,法语描述会正确显示在 WYSIWYG 编辑器中。 如果我保存产品,则法语字符会正确显示。 但这是因为 WYSIWYG 编辑器正在将字符转换为 html 实体。

收集 Unicode 数据时的一个常见问题是将连接数据库/表/列字符集配置保留为 ISO-8859-1,但随后插入的数据实际上是 utf-8。 数据库基本上被告知,“这里有一些 8859-1 编码的数据,将它存储在这个 8859-1 表中”。 它不进行任何转换,因为它没有意识到数据不在 8859-1 中。 所以数据是utf-8,但数据库基本上被告知它在8859-1中。

这是一个潜在的问题,因为正如您所说,如果您将字符集更改为 UtF-8,数据库将错误地转换它们,因为它会将“8859-1”数据(记住数据库认为它是 8859-1)转换为 utf- 8 - 转换当然会失败,因为数据确实是 utf-8。

所以基本上问题是phpmyadmin在8859-1中,但你告诉它在8859-1中插入数据,然后告诉它你在8859-1中提供数据,然后给它utf-8数据。 数据库认为它是 8859-1,所以解决问题的唯一简单方法是 a) 继续像 8859-1 一样行事,即使它不是,并希望您永远不必处理排序、搜索、整理等(可能有效在您的情况下),或 b) 将数据提取为 8859-1(保持未转换),然后在将数据库和连接设置为 utf-8 后重新插入它,以便数据库知道数据真正使用的字符集。

希望这是有道理的。 如果没有,请告诉我。 这是一个很难缠住你的头。

您可能会考虑使用 PHP 打开 csv(因为您在标签中提到了它),并在使用查询保存它们之前在字段上使用 utf8_encode。

这个问题太老了,但是在 Excel 等各种程序中将文件的编码从 ISO-8859-1 更改为 UTF-8 对我不起作用。

我的问题是像intérêt intérêt在文件中显示为intérêt

如果这对某人有帮助,以下是最终对我有用的方法:

  1. 从 CSV 文件开始,在记事本中打开
  2. 单击“文件>另存为”。
  3. 在出现的对话窗口中 - 从“编码”字段中选择“ANSI”。 然后点击“保存”。

就是这样! 使用 Excel 打开这个新的 CSV 文件现在应该可以正确显示非英文字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM