gpt4 book ai didi

php - 从字符串中删除非 utf8 字符

转载 作者:IT老高 更新时间:2023-10-28 11:51:46 27 4
gpt4 key购买 nike

我在从字符串中删除非 utf8 字符时遇到问题,这些字符显示不正确。字符是这样的 0x97 0x61 0x6C 0x6F(十六进制表示)

删除它们的最佳方法是什么?正则表达式还是别的什么?

最佳答案

如果您将 utf8_encode() 应用于已经是 UTF8 的字符串,它将返回一个乱码的 UTF8 输出。

我创建了一个函数来解决所有这些问题。它被称为 Encoding::toUTF8()

你不需要知道你的字符串的编码是什么。它可以是 Latin1 (ISO8859-1)、Windows-1252 或 UTF8,或者字符串可以混合使用它们。 Encoding::toUTF8() 会将所有内容都转换为 UTF8。

我这样做是因为一项服务向我提供了一个困惑的数据源,将这些编码混合在同一个字符串中。

用法:

require_once('Encoding.php'); 
use \ForceUTF8\Encoding; // It's namespaced now.

$utf8_string = Encoding::toUTF8($mixed_string);

$latin1_string = Encoding::toLatin1($mixed_string);

我已经包含了另一个函数,Encoding::fixUTF8(),它将修复每个 UTF8 字符串,因为它已经被多次编码为 UTF8,所以看起来是乱码。

用法:

require_once('Encoding.php'); 
use \ForceUTF8\Encoding; // It's namespaced now.

$utf8_string = Encoding::fixUTF8($garbled_utf8_string);

例子:

echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");
echo Encoding::fixUTF8("FÃÂédÃÂération Camerounaise de Football");
echo Encoding::fixUTF8("Fédération Camerounaise de Football");

将输出:

Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football
Fédération Camerounaise de Football

下载:

https://github.com/neitanod/forceutf8

关于php - 从字符串中删除非 utf8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1401317/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com