【问题标题】:Convert file path to UTF-8将文件路径转换为 ​​UTF-8
【发布时间】:2014-07-19 20:27:46
【问题描述】:

我想获取、打印并将磁盘上名为A&T+X-8_L_R1.png 的文件的完整路径写入文本文件,但是当我打印它时,我得到了A&T+X-8_L_R1.png

AFAIK 我需要更改编码。我进行了搜索并找到了这个潜在的解决方案,但它不起作用:

String filePathString = relativeUri.ToString();

byte[] bytes = Encoding.Default.GetBytes(filePathString);
filePathString = Encoding.UTF8.GetString(bytes);
filePathNode.SetValue(filePathString);

这是我班级的完整代码:http://pastebin.com/dZLGeS8p

该类递归搜索*.png 文件并从它们的路径创建XML 结构。当我保存XML 文件时,& 等路径中的特殊字符会发生变化。

谁能指出我的解决方案?

【问题讨论】:

  • 您在哪里打印?打开并保存到名为A&T+X-8_L_R1.png 的文件(例如使用File.WriteAllText 有效。什么是filePathNode
  • 请展示获取、打印和写入的代码
  • @pasty 我不想写入名为A&T+X-8_L_R1.png 的文件。我想在文件中写入字符串A&T+X-8_L_R1.png
  • 这是完全正常的,是 XML 文件所必需的。我猜您正在使用文本编辑器查看文件。 &当您正确读取 XML 文件时,将转换回 &。
  • 如果您想用眼睛而不是计算机来阅读文本,那么请使用专为眼睛设计的文件格式。就像 .txt 文件、Microsoft Word 文档、PDF 文件一样。 XML 是为计算机设计的。

标签: c# .net utf-8 utf-16 utf


【解决方案1】:

您正在编写 XML 文件,而不是纯文本文件。在 XML 中,& 符号需要转义为 &

所以你得到的结果完全没问题。甚至要求是这样的。

我建议使用可以正确验证和显示 XML 的应用程序打开 XML 文件。更容易看出文件是否正确。

您的代码中不需要进行 UTF-8 转换。如果 XML 文件以 UTF-8 编码,您的 XML 类将负责任何所需的转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2015-09-21
    • 1970-01-01
    • 2023-03-16
    • 2013-10-10
    相关资源
    最近更新 更多