在nginx上,我的文件/网址包含德语单词“frühling”。
从Mac + Safari访问网址时出现问题。
我复制/粘贴了两个网址 - 正确的一个和Mac中的一个,结果如下:
[nmmm@zenbook ~]$ cat > a
frühling
^C
[nmmm@zenbook ~]$ cat > b
frühling
^C
[nmmm@zenbook ~]$ xxd a
0000000: 66 72 75 cc 88 68 6c 69 6e 67 0a fru..hling.
[nmmm@zenbook ~]$ xxd b
0000000: 66 72 c3 bc 68 6c 69 6e 67 0a fr..hling.
“a”是正确的,“b”是不正确的。似乎差异就在变音符号“ü”之后,还有正常的“ u ”。变形金刚“ü”也有所不同。
这个符号来自哪里? 我的客户有时会使用MsWord或LibreOffice来准备这些东西。 有没有办法让nginx以某种方式处理(重构)它?
答案 0 :(得分:0)
搜索Google我发现以下内容: https://coderwall.com/p/gc079w/debugging-encodings-and-character-sets
似乎有两种方法可以解决你的问题:
正确的utf8编码是(你会在hexdump中看到 c3 bc ):
U+00FC ü c3 bc LATIN SMALL LETTER U WITH DIA.
有效的UTF-8字符序列,显示相同但不是 一个“ü”(再次,在hexdump中75 cc 88):
U+0075 u 75 LATIN SMALL LETTER U U+0308 ̈ cc 88 COMBINING DIAERESIS
<强>更新强>
使用find你可以找到所有带有正确或错误变音符号的文件,以“正常”方式工作:
find . -name '*ü*'
但是你需要复制/粘贴正确的变音符号“方式”或制作bash文件。
我正在创建符号链接的可能解决方案,可以使用find的输出完成。
(仍在寻找如何从nginx级别修复此问题)