NFS文件名称是ASCII标准之外的字符吗?

时间:2009-09-30 16:41:18

标签: encoding nfs

我已经实现了自己的NFS服务器,一切正常,但我如何编码不属于ASCII标准的字符? XDR RFC说字符串被编码为ascii,然后删除所有非ascii字符?但是,如果我启动一个我没有写过的nfs服务器,它似乎支持那些字符...

我尝试创建一个名为“hejåäö”的文件夹并在nfs客户端上正确显示,如果我查看使用WireShark发送的数据,我会得到字符串“hej \ 345 \ 344 \ 366”或十六进制“68656a20e5e4f6 “这是什么编码?

还尝试编码“hej 1 + 1 = 2”..

尝试ed UTF-7与åäö配合得很好,但没有配合+所以它不是UTF-7

2 个答案:

答案 0 :(得分:1)

代码集看起来像ISO 8859-18859-15(由于所显示的符号对两者都是通用的,因此无法分辨)。

  • å= 0xE5 = 0345
  • ä= 0xE4 = 0344
  • ö= 0xF6 = 0366

规范可能已经过时,您只需要传输具有高位(第8位)位的字符 - 就像其他NFS服务器一样。


区分ISO 8859-1和8859-15

这两个代码集之间的差异 - 使用它们的Unicode字符映射 - 显示在此输出中(从diff派生的文件定义了8859-1和8859-15中字符的Unicode等价物。)< / p>

ISO 8859-1

  • A4 U + 00A4 CURRENCY SIGN
  • A6 U + 00A6 BROKEN BAR
  • A8 U + 00A8 DIAERESIS
  • B4 U + 00B4 ACUTE ACCENT
  • B8 U + 00B8 CEDILLA
  • BC U + 00BC VULGAR FRACTION ONE QUARTER
  • BD U + 00BD VULGAR FRACTION ONE HALF
  • BE U + 00BE VULGAR FRACTION THREE QUARTER

ISO 8859-15

  • A4 U + 20AC EURO SIGN
  • A6 U + 0160带卡尔顿的拉丁文大写字母
  • A8 U + 0161带卡尔顿的拉丁文小写字母
  • B4 U + 017D LATIN CAPITAL ZETTER Z CARON
  • B8 U + 017E带卡尔顿的拉丁文小写字母
  • BC U + 0152 LATIN CAPITAL LIGATURE OE
  • BD U + 0153 LATIN SMALL LIGATURE OE
  • BE U + 0178 LATIN CAPITAL YET WITH DIAERESIS

答案 1 :(得分:0)

如果我记得,NFS服务器对待编码非常糟糕。

文件名中任何字符的字节都不能为0或0x2F,最大长度为255字节。

因此UTF-8编码文件名的流行。