Macos “为什么?”;触摸屏åäö&引用;结果是\303\245\303\244\303\266“什么;?
我在zsh中运行了命令Macos “为什么?”;触摸屏åäö&引用;结果是\303\245\303\244\303\266“什么;?,macos,unicode,encoding,zsh,Macos,Unicode,Encoding,Zsh,我在zsh中运行了命令touchåäö,希望用一些外来字符创建一个文件名 然后,我使用HTML页面中的文件上载对话框将该文件上载到服务器。在本例中,我使用的非ascii字节序列在Content DispositionHTTP头中结束,并创建一个错误 所以,我用这个函数来清理文件名 函数ascii(拉丁文1:string):string{ 拉丁语1=拉丁语1。替换(/[\u00C0-\u00C5]/g,“A”) 拉丁语1=拉丁语1。替换(/[\u00E0-\u00E5]/g,“a”) 拉丁语1=拉
touchåäö
,希望用一些外来字符创建一个文件名
然后,我使用HTML页面中的文件上载对话框将该文件上载到服务器。在本例中,我使用的非ascii字节序列在Content Disposition
HTTP头中结束,并创建一个错误
所以,我用这个函数来清理文件名
函数ascii(拉丁文1:string):string{
拉丁语1=拉丁语1。替换(/[\u00C0-\u00C5]/g,“A”)
拉丁语1=拉丁语1。替换(/[\u00E0-\u00E5]/g,“a”)
拉丁语1=拉丁语1。替换(/[\u00D2-\u00D6]/g,“O”)
拉丁语1=拉丁语1。替换(/[\u00F2-\u00F6]/g,“o”)
拉丁语1=拉丁语1。替换(/[^\-\.0-9A-Z\u a-Z]+/g,“-”)
返回拉丁语1
}
想象一下,当文件名显示为a-a-o
而不是aao
时,我会感到惊讶。更可怕的是,如果我更改latin1.replace(/[\u00E0-\u00E5]/g,“a”)
改为“w”
我会得到“w”
(注意帽子)
字符串是如何通过一些疯狂的编码加载到JavaScript环境中的?文件系统在这里真正使用的是什么编码?原因是:
这个“字符串”实际上是一个Unicode链
\303\245\303\244\303\266
如果我们把它们分成两块,你会得到
\303\245
这是OCT 303(或十六进制C3)和OCT 245(或十六进制A5)
因此\303\245与C3A5相同,C3A5是å
这同样适用于其余代码
\303\244
\303\266
“\303\245\303\244\303\266”
是UTF-8编码字符串的八进制表示。知道了。但这并不能解释绳子是怎么弄乱的。它是磁盘上的UTF-8,当加载到浏览器时它是如何被销毁的?这是我真正困惑的部分。