PHP:Unicode 强调字符和变音符号

标签 php unicode encoding tinymce

在我们的网站上,一些 Mac 用户在将文本从 PDF 文件复制粘贴到 TextArea(由 TinyMCE 处理)时遇到了麻烦。所有强调的字符都已损坏,例如 e? 表示 éi? 表示 î,等。我无法用 Windows 计算机重现此问题。

当我在文件上写入 TextArea 的内容时(在将其插入数据库之前),我发现初始的 é 在视觉上与传统的 é(在 Vim 上,见下文)。

Visual example of the problem

确实:

// the corrupted é - first line of the screenshot
echo bin2hex($char); // display 65cc81

// traditionnal é
echo bin2hex('é');   // display c3a9

经过大量搜索后,我在这里: Mac OS 似乎将 Unicode 重音字符复制为两个字符的组合:在我们的示例中,e + ́。到目前为止,我没有找到任何解决方案来将损坏的 é 替换为真实的 é,以避免数据库中出现 e?

我有点绝望。

最佳答案

normalizing the representation to one form or the other的过程被称为规范化。在 PHP 中有 Normalizer class为此,通过它发送所有输入是一个好主意:

$input = Normalizer::normalize($input);

您可能想要规范化以形成 C,规范分解,然后是规范组合。

如果该类在您的系统上不可用,则有 Patchwork UTF-8 library .

关于PHP:Unicode 强调字符和变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586060/

相关文章:

javascript - 将 Angular 范围传递给 jquery

c# - 用 unicode 字符填写 pdf 表单

python - 打印日文(中文)字符

excel - 我正在使用宏来进行邮件合并,如何在单词输出中保留中文数字?

angular - 在 Angular 4 中使用 Base64 编码

php - 是否有适用于PHP或Ruby的网络搜寻器库?

php - Windows 上痛苦的慢 docker PHP 安装

php - joomla 扩展安装错误

Python——Unicode字符串中的ASCII编码字符串;如何删除 'u' ?

php - pgSQL "ERROR: invalid byte sequence for encoding "UTF 8": 0x86"解析电子邮件时