php - 以 UTF-8 字符集显示文本且没有错误字符
问题描述
我有一个包含一些内容的文本文件,我想在我的网页上显示它。我正在以这种方式加载内容:
$txt = file_get_contents('new.txt');
当我显示内容时,charset=UTF-8
它看起来像这样:
当我charset=ISO-8859-1
改用它时,它看起来像这样:
我希望文本看起来像第二个示例,但使用charset=UTF-8
而不是 ISO-8859-1。如何转换文本以使其正确显示?
解决方案
您可以处理原始数据或即时转换。
如果您打算将所有新数据以 UTF-8 格式存储,那么批量转换所有旧数据会更有利。在原始数据中混合编码并不好玩。您可以参考此问题来查找批量转换命令建议。
另一方面,如果您要将输入和存储保持在 ISO-8859-1 编码中,那么您唯一能做的就是即时转换文档。
$txt = iconv('iso-8859-1', 'utf-8', file_get_contents('new.txt'));
或者如果您的源文件有混合编码iso-8859-1
和其他未知编码,您可以添加//IGNORE
标志以防止错误:
$txt = iconv('iso-8859-1', 'utf-8//IGNORE', file_get_contents('new.txt'));
这需要更多的计算能力来每次显示页面。因此,最好始终转换原始内容(除非您的情况不可能)。
推荐阅读
- excel - 尝试使用命令按钮删除 VBA 中的空行
- django - 在基于类的视图中正确实现 UserPassesTestMixin 或 AccessMixin
- dom - 加载下拉项目但禁用选择
- dbunit - DBRider 的问题:NoSuchTableException “表 'MY_NAME_TABLE' 在模式 'null' 中不存在”
- django - 当相关(外键)对象发生变化时如何可靠地运行自定义代码
- javascript - 组件的孩子没有出现
- python - 如何从字典python列表中获取所有id
- java - 如何在有向图中从特定顶点执行 BFS 或 DFS,其中某些顶点的出度为 0?
- c# - LINQ 语句以 100 个块执行 DynamicTableEntities 的嵌套列表
- python - Pandas 通过保留一列的第一个元素和另一列的最后一个元素来合并