php - 我在哪里可以找到一个 UTF8 位到字符表以将例如 "ñ"转换为 "ñ"?

标签 php utf-8 character-encoding mojibake

我一直在网上仔细查看,但似乎找不到包含此类转换的表格。我找到的那些有一些错误并且不太可靠,所以我找了一些官方表格或类似的,但不幸的是我没有..所以我在这里..

如标题中所述,我想做的是,例如,知道“ñ”代表什么(这个我已经知道..“ñ”),但不仅是西类牙语字符,还有其他字符(我已经知道波兰语了)。

主要问题是我在 PHP 中有一个字符串,有时可能会以“eñe”(没关系)和其他“eñe”的形式出现......最近我应该能够将它更改为“eñe"所以它是可读的..但如果没问题我不想改变它。为此,我使用了 utf8_decode 函数,但如果字符串可读,它仍会将“ñ”更改为“■”(但为白色)。这就是为什么我不能总是解码字符串的原因,并且如果我使用 mb_detect_encoding 函数,我总是会得到“UTF-8”作为响应。这不是很有帮助。

一旦我知道了所有的 utf8 位字符,例如“ñ”代表“ñ”,“Ź”代表“Ź”等,我打算做一个基本上将一个替换为另一个的功能。 . 这与 utf8_decode 做的有点相同.. 除非这里有人有更好的解决方案!

提前致谢! 问候!

最佳答案

你为什么要这样做?您想恢复损坏的数据吗?

它不应该真的作为通常业务代码流的一部分来完成。您需要做的就是确保您的 web 应用程序的所有层都正确使用 UTF-8。 PHP 源、HTTP 响应 header 和正文、数据库表、数据库连接等。另见 PHP UTF-8 cheatsheet .

如果您实际上想将此作为一项一次性任务来恢复损坏的数据,那么最好知道您问题中的损坏数据表示未正确存储的 UTF-8 数据或显示为 ISO-8859-1。您只需要将数据读取为 ISO-8859-1 并写入为 UTF-8。一度。然后以正确的方式去做。

作为证据,ñ ( Unicode Character 'LATIN SMALL LETTER N WITH TILDE' (U+00F1) ) 存在于字节 0xC30xB1 的 Unicode( UTF-8 ,多字节编码)中。当这些字节使用单字节编码(如 ISO-8859-1)进行编码时,0xC3 变为 Ã0xB1 变为 ±。另见 ISO-8859-1 codepage layout .

关于php - 我在哪里可以找到一个 UTF8 位到字符表以将例如 "ñ"转换为 "ñ"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3920432/

相关文章:

php - 使用php从mysql表中提取字段

php - 如何使用 php 与 mysql 中的表进行交互

c# - 为什么 UTF8Encoding.GetBytes 不发出字节顺序标记?

utf-8 - 我可以问 Perl 6 的 LWP::Simple 来处理格式错误的 UTF-8 吗?

python - 在 Python 中,如何替换字符串中的所有非 UTF-8 字符?

ruby - 如何在 ruby​​ 中创建一个带有 "bad encoding"的字符串?

python - 在 Python 中,如何将 8 位二进制数转换为 ASCII 字符?

php - CodeIgniter 查询获取位置

php - IIS下No input file指定PHP错误

mysql - MySQL 服务器是否隐式支持编码转换?