Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将编码从windows-1251更改为utf-8_Php_Encode - Fatal编程技术网

Php 将编码从windows-1251更改为utf-8

Php 将编码从windows-1251更改为utf-8,php,encode,Php,Encode,我正在尝试解码windows-1251中创建的文件,并将其编码为UTF-8。除了一些特殊的角色,比如奥希欧,一切都正常。例如,我使用preg_replace来改变“变”为“变”,其工作原理如下: $file=preg_replace/\Ž/,‘Ä’,$file 我在使用Å时遇到了问题,它显示为这样,我看到转换为单班三,我似乎无法在其上使用preg_replace?您有两个主要的内置函数来完成这项工作,只需选择一个: : : 要确定为什么您的自制替代方案不起作用,我们需要花一些时间查看完整的代码库

我正在尝试解码windows-1251中创建的文件,并将其编码为UTF-8。除了一些特殊的角色,比如奥希欧,一切都正常。例如,我使用preg_replace来改变“变”为“变”,其工作原理如下:

$file=preg_replace/\Ž/,‘Ä’,$file


我在使用Å时遇到了问题,它显示为这样,我看到转换为单班三,我似乎无法在其上使用preg_replace?

您有两个主要的内置函数来完成这项工作,只需选择一个:

:

:

要确定为什么您的自制替代方案不起作用,我们需要花一些时间查看完整的代码库,但我可以想到一些潜在的问题:

您使用的是混合编码,但没有使用十六进制表示法或任何类型的字符串实体。还不清楚脚本文件本身保存为什么编码

PCRE中没有任何信息,也不知道意图是什么

也许您不止一次地替换了一些字符串

最后但并非最不重要的一点是,您是否编译了一个完整且正确的字符映射数据库,其中至少包含两种编码之间不同的128个代码点


为什么不找到更好的初始转换方法呢?使用$file=iconv Windows-1251,UTF-8,$file;mb\u convert炣编码已工作!我使用以下程序包进行转换,但未正确转换:
$file = mb_convert_encoding($file, 'UTF-8', 'Windows-1251');
$file = iconv('Windows-1251', 'UTF-8', $file);