在我们的网站上,一些 Mac 用户在将文本从 PDF 文件复制粘贴到 TextArea(由 TinyMCE 处理)时遇到了麻烦。所有强调的字符都已损坏,例如 e?
表示 é
,i?
表示 î
,等。我无法用 Windows 计算机重现此问题。
当我在文件上写入 TextArea 的内容时(在将其插入数据库之前),我发现初始的 é
在视觉上与传统的 é
(在 Vim 上,见下文)。
确实:
// 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/