php - 将 2 个不同种类的相似德语字符转换为 PHP 中的相同 ASCII 字符串

标签 php encoding utf-8 ascii

我有这两个字符串:

$str1 = 'Ö';
$str2 = 'Ö';
$e1 = mb_detect_encoding($str1);
$e2 = mb_detect_encoding($str2);
var_dump($str1);
var_dump($str2);
echo 'e1: '.$e1.', e2: '.$e2;

结果是:

string(3) "Ö"
string(2) "Ö"
e1: UTF-8, e2: UTF-8

看来它们不仅是德文字符,而且每个字符都不相同,因此将它们转换为 ASCII 以这种方式

PHP: Replace umlauts with closest 7-bit ASCII equivalent in an UTF-8 string

不会产生相同的结果。有没有办法将这两个字符串转换为这些 ASCII 形式之一 BNOEBNO


我知道也许我可以从两者复制 Ö 并将其包含在 strtr 搜索和替换数组中,但我不知道如何重现所有以与第一个 Ö 相同的方式编码的字符。

最佳答案

这是在 Unicode 中表达同一个字母的两种不同形式;一个是 O 与组合 diereses 的组合,另一个是字母 Ö。 Unicode allows either variant to express "Ö".

要将其规范化为您首选的变体,请使用 Normalizer::normalize :

$str = Normalizer::normalize('Ö', Normalizer::FORM_C);

您可能需要形式 C,它将收敛于“Ö”(单字母形式)。如果您更喜欢“O”+ 组合二重音,请改用表格 D。

关于php - 将 2 个不同种类的相似德语字符转换为 PHP 中的相同 ASCII 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37021985/

相关文章:

php - MySQL 对一列数据进行排序

swift - 如何通过指定其 CodingKeys 的子集来对 Codable 类型进行编码?

git - 如何在 Ubuntu 和 Windows 上为 German Umlaute 配置 git 编码?

encoding - liquibase 破坏 UTF-8 变更集

php - Codeigniter CSRF 保护 VS 选项卡

php - 如果存在则关联

javascript - 如何从php中的for循环中获取jquery值?

string - 将 5 个字符的字符串编码为唯一且可重复的 32 位整数

python - 在 Python 中从 BaseHTTPServer 下载带有 unicode 字符的文件

php - 将CSV文件导入mysql,有波斯语(utf-8)格式文本