0

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

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

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

尝试 ed UTF-7 在 åäö 上效果很好,但在 + 上效果不佳,所以它不是 UTF-7

4

2 回答 2

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 等效项的文件之间的一个)。

ISO 8859-1

  • A4 U+00A4 货币符号
  • A6 U+00A6 断条
  • A8 U+00A8 分音符
  • B4 U+00B4 重音
  • B8 U+00B8 塞迪拉
  • BC U+00BC 普通分数四分之一
  • BD U+00BD 普通分数半
  • BE U+00BE 普通分数四分之三

ISO 8859-15

  • A4 U+20AC 欧标
  • A6 U+0160 带有 CARON 的拉丁文大写字母 S
  • A8 U+0161 带 CARON 的拉丁文小写字母 S
  • B4 U+017D 带有 CARON 的拉丁文大写字母 Z
  • B8 U+017E 带 CARON 的拉丁文小写字母 Z
  • BC U+0152 拉丁大写连字 OE
  • BD U+0153 拉丁文小连字 OE
  • BE U+0178 带分音符号的拉丁文大写字母 Y
于 2009-09-30T17:04:41.950 回答
0

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

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

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

于 2009-09-30T20:19:59.927 回答