C# 将文件路径转换为UTF-8

C# 将文件路径转换为UTF-8,c#,.net,utf-8,utf-16,utf,C#,.net,Utf 8,Utf 16,Utf,我想获取、打印并写入名为a&T+X-8_L_R1.png的文件在磁盘上的完整路径,但当我打印它时,我得到a&;T+X-8_L_R1.png 好的,我需要更改编码。我进行了搜索,找到了这个潜在的解决方案,但它不起作用: String filePathString = relativeUri.ToString(); byte[] bytes = Encoding.Default.GetBytes(filePathString); filePathString = Encoding.UTF8.

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

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

String filePathString = relativeUri.ToString();

byte[] bytes = Encoding.Default.GetBytes(filePathString);
filePathString = Encoding.UTF8.GetString(bytes);
filePathNode.SetValue(filePathString);
这是我班级的完整代码:

该类递归地搜索
*.png
文件,并根据其路径创建
XML
结构。当我保存
XML
文件时,像
&
这样的路径中的特殊字符被更改


有人能告诉我一个解决方案吗?

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

所以你得到的结果是完全正确的。甚至要求是这样

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


代码中不需要UTF-8转换。如果XML文件是用UTF-8编码的,您的XML类将负责所有必需的转换。

在哪里打印?打开并保存到名为
a&T+X-8_L_R1.png的文件(例如使用
File.writealText
有效。什么是
filePathNode
?请显示获取、打印和写入的代码。@pasty我不想写入名为
a&t+X-8\u L\u R1.png
的文件。我想在文件中写入字符串
a&t+X-8\u L\u R1.png
。这对于XML文件来说是完全正常和必需的。我很抱歉。)essing您正在使用文本编辑器查看文件。当您正确读取XML文件时,&;将转换回&。如果您想使用眼睛而不是计算机来读取文本,请使用为眼睛制作的文件格式。与.txt文件(Microsoft Word文档)一样,PDF文件.XML也是为计算机制作的。