Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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非多字节函数更改为其mb_uu等价物(即mb_Stru_u替换、mb_strlen等)?_Php_Unicode_Multibyte - Fatal编程技术网

我是否可以在不破坏站点的情况下将所有PHP非多字节函数更改为其mb_uu等价物(即mb_Stru_u替换、mb_strlen等)?

我是否可以在不破坏站点的情况下将所有PHP非多字节函数更改为其mb_uu等价物(即mb_Stru_u替换、mb_strlen等)?,php,unicode,multibyte,Php,Unicode,Multibyte,我需要升级一个大型PHP站点以支持UTF-8。。。作为第一步,我想更改所有PHP代码以使用mb_u函数。我现在就可以继续这样做了吗,即使没有其他内容更改为多字节?(也就是说,它不会打碎任何东西,对吗?) 在我继续下一步(升级数据库等)之前,我希望先完成PHP的工作,并在我现有的非多字节站点上运行这些代码。您可以使用自定义函数来获得其他机制所希望的结果。我建议5种方法: 1) 一个自定义函数,用于读取旧字符串并将其转换为8位get_string\u utf8()。用法非常简单: function

我需要升级一个大型PHP站点以支持UTF-8。。。作为第一步,我想更改所有PHP代码以使用mb_u函数。我现在就可以继续这样做了吗,即使没有其他内容更改为多字节?(也就是说,它不会打碎任何东西,对吗?)


在我继续下一步(升级数据库等)之前,我希望先完成PHP的工作,并在我现有的非多字节站点上运行这些代码。

您可以使用自定义函数来获得其他机制所希望的结果。我建议5种方法:

1) 一个自定义函数,用于读取旧字符串并将其转换为8位
get_string\u utf8()
。用法非常简单:

function get_string_utf8($string) {
  return mb_convert_encoding($string, 'UTF-8', mb_detect_encoding($string, 'UTF-8, ISO-8859-1', true));
}

$old_string = "Elämä on kaunis ja mahtavia yllätyksiä"; //Life is beautiful and can hold nice surprises

$new_string = get_string_utf8($old_string);
function file_get_contents_utf8($file) {
  $content = file_get_contents($file);
  return mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}

$old_file = "Life_is_beautiful.html";

$new_file = file_get_contents_utf8("$old_file");
2) 一个自定义函数,用于读取旧文件并使用unicode(8bit)
文件\u获取内容\u utf8()
打开它。用法非常简单:

function get_string_utf8($string) {
  return mb_convert_encoding($string, 'UTF-8', mb_detect_encoding($string, 'UTF-8, ISO-8859-1', true));
}

$old_string = "Elämä on kaunis ja mahtavia yllätyksiä"; //Life is beautiful and can hold nice surprises

$new_string = get_string_utf8($old_string);
function file_get_contents_utf8($file) {
  $content = file_get_contents($file);
  return mb_convert_encoding($content, 'UTF-8', mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
}

$old_file = "Life_is_beautiful.html";

$new_file = file_get_contents_utf8("$old_file");
3) 始终在php文件开头使用:

4) 如果可能的话,您应该通过(通过php编写过程)将一个8位文件(没有BOM)保存为unicode(UTF-8)来直接提供一个8位文件

5) 始终使用正确的元:


我希望这能有所帮助。

有些函数本机支持多字节,因此不支持。例如,我们无法看到您的代码,因此无法确定。一般来说,它不应该破坏任何东西,但这完全取决于您对数据所做的操作。mb函数对字符而不是字节进行操作。如果您的任何函数都要在字节上操作,那么您可能会破坏某些内容。这个问题是特定于上下文的,它完全取决于代码的功能。不使用单个
mb.*
函数就完全可以支持UTF-8。引入这些函数可能会破坏任何东西,也可能不会破坏任何东西,这完全取决于您的代码有什么期望以及它对值做了什么。