【问题标题】:Why is a windows filename reporting it's name with unicode non-characters ()?为什么 Windows 文件名使用 unicode 非字符 (�) 报告其名称?
【发布时间】:2015-05-15 14:06:48
【问题描述】:

我遇到了一个文件,它的文件名报告为풜〣

然后,SQL Server 无法将其解释为 XML,因为它在 XML v1.0 和 v1.1 中都被称为特别无效的字符。

当我dircmd 中的目录时,我得到???? 作为文件名,这似乎是四个字符。

我是通过 PowerShell 的 Get-ChildItem 获得任何文件名的。

这里还有其他事情吗?像 '' (&#xFFFF) 这样的 Unicode 非字符如何进入文件名,或者这与未安装的语言包或其他什么有关?

【问题讨论】:

  • 非字符 U+FFFF 是 NTFS 文件名中的合法“字符”,但不是一个好主意。这可能是某个时候编码失败的结果。
  • cmd 的 dir 命令应该输出 UTF-16 文本,但管道默认编码为 OEM 代码页(例如 CP437),它将用问号替换 U+FFFF。要让 cmd 改用 UTF-16,请将来自 cmd /U /c dir 的输出通过管道传输。

标签: xml windows powershell unicode ntfs


【解决方案1】:

感谢@eryksun 的cmets,我能够使用cmd 中的/U unicode 开关来处理带有&#xFFFF 的文件名。

【讨论】:

    猜你喜欢
    • 2020-10-23
    • 2015-10-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多