【发布时间】:2015-10-25 11:50:50
【问题描述】:
有时我会遇到文件名中的元音变音字符编码奇怪(错误?)的文件。也许编码来自Mac系统,但我不确定。我使用 Windows。
例如:
Volkszählung 而不是 Volkszählung(尝试在第一个 ä 后使用 Backspace)。
使用 notepad++ 将其粘贴到 ANSI 编码文件中时,它会插入 Volksza¨hlung。
我有两个问题:
a) 那是从哪里来的?它是哪种编码?
b) 在 PHP 中使用 glob() 在使用通配符 * 时不会列出这些文件。如何在 PHP 中检测到它们?
【问题讨论】:
-
这就是Unicode预组合字符和组合字符之间的区别。如果 Notepad++ 将这两个部分视为单独的字符,那么它的 Unicode 支持肯定很差。
-
您的问题似乎是您使用的操作系统正在创建名称不符合正确 Unicode 规范化规则的文件。不知道如何处理。
-
@Andrea,这不是真正的根本问题;即使这个特定的字符串使用了预先组合的字符,应用程序也可能遇到其他无法规范化的字符串,因为不存在预先组合的字符。它需要能够处理组合字符。
-
@Wyzard 我知道,但我提到的问题是他们的文件系统显然混合了各种表示
标签: php encoding diacritics