我是否可以在不破坏站点的情况下将所有PHP非多字节函数更改为其mb_uu等价物(即mb_Stru_u替换、mb_strlen等)?
我需要升级一个大型PHP站点以支持UTF-8。。。作为第一步,我想更改所有PHP代码以使用mb_u函数。我现在就可以继续这样做了吗,即使没有其他内容更改为多字节?(也就是说,它不会打碎任何东西,对吗?)我是否可以在不破坏站点的情况下将所有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的工作,并在我现有的非多字节站点上运行这些代码。您可以使用自定义函数来获得其他机制所希望的结果。我建议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。引入这些函数可能会破坏任何东西,也可能不会破坏任何东西,这完全取决于您的代码有什么期望以及它对值做了什么。