【问题标题】:Bug with php file converted from ansi to utf-8将 php 文件从 ansi 转换为 utf-8 的错误
【发布时间】:2015-10-06 10:26:57
【问题描述】:

我有一些用 ANSI 编码的 php 脚本文件。现在我将我的网站转换为 html5,我需要 UTF-8 中的所有内容,以便正确显示这些文件中的重音符号,而无需通过 iconv() 进行任何 php 转换。我使用记事本++将脚本的编码设置为UTF-8并保存文件,大多数都很好,重音显示正确,现在只有主脚本阻止了所有内容,服务器只返回一个白页,没有任何错误消息,即使是 ini_set('error_reporting', 'E_ALL')

当我在 Notepad++ 中将编码改回 ANSI 并保存文件而不进行任何其他更改时,它再次起作用(除了没有 iconv() 时重音符号无法正确显示)。

我也尝试过使用 php 脚本来更改 ...$file = iconv('ISO-8859-1','UTF-8', $file);... 的编码,但结果完全一样!

我编写了一个简短的 php 脚本来查找高 char() 值,但最高值似乎是常见的法国口音,如 é、è 等,它们也存在于其他文件中并且没有问题。我确实删除了其他特殊字符,没有任何效果......

问题是文件很大,超过 4500 行,我不知道如何继续纠正这个问题?有人遇到过这个问题,或者有什么想法吗?

【问题讨论】:

  • 在 Notepad++ 中,您实际上是在转换文件,还是只是更改您正在查看它的编码?
  • 我很确定您采取了错误的方法。您的 PHP 文件不应该是 utf-8。字符串等可以,尝试使用字节转义序列。
  • wye,我转换然后保存。如果我只是更改编码,重音会显示为奇怪的代码 xE8、xA3 等。
  • 您是否尝试过“没有 BOM 的 UTF-8”(或类似的,语言更改,抱歉)选项? BOM 在另一个应用程序中出现了一些错误。
  • 是的,我做到了,结果相同...

标签: php encoding utf-8


【解决方案1】:

问题在于“£”(磅)字符,我在 preg_match("£(...)£", "...", $string) 和 preg_replace 条件中经常使用它作为分隔符。

由于某种原因,这些字符在转换后未被接受。我不得不全部替换它们,然后只有它在 utf-8 中运行良好......显然现在文件已转换,它们不是问题,我可以再次使用它们。

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2019-02-10
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多