C#System.IO.Directory.CreateDirectory - 用utf-8字符创建目录?

Per*_*ika 4 c# utf-8

我从utf-8编码文件中读取数据.然后,此文件的部分内容将用作新创建的文件夹的名称.但是,我的文件夹名称是:

bohou _120328而不是bohouš_120328

如何为新创建的文件夹名称设置正确的编码?谢谢.

编辑:

我正在以这种方式从文件中读取信息:

System.IO.StreamReader file = new System.IO.StreamReader(nameOfFile);

 while ((j = file.ReadLine()) != null) { 
    //manipulating string in j
 }
Run Code Online (Sandbox Code Playgroud)

然后用.创建目录

if (Directory.Exists(folder) == false) {
                                    Console.WriteLine("creating directory " + folder);
                                    System.IO.Directory.CreateDirectory(@folder);
                                } 
Run Code Online (Sandbox Code Playgroud)

如果我在我的Windows 7,64位计算机上运行我的应用程序,一切都很好.但是,如果我在其他使用WinXP等旧系统的计算机上运行,​​编码就错了,看起来就像这样

bohou?_120328
Run Code Online (Sandbox Code Playgroud)

在使用变量创建文件夹之前,我将i写入输出,但一切都很好.甚至文件夹名称也没问题.但不幸的是,只是在我的电脑上.

编辑2:

事情变得更加奇怪.我用过这段代码如何从.NET中的字符串中删除变音符号(重音符号)?删除变音符号,因为没有变音符号的名字对我来说很好.

但是,再次:

  1. 在我的计算机上运行代码产生bohous_120328
  2. 在其他计算机上运行代码和我的闪存盘产生bohou _120328

我发誓它是相同的代码,因为我复制了我的.exe文件.

调试器说在创建文件夹之前问题已经存在于我的字符串变量中.我不明白,在这种情况下环境如何影响我的变量.

会很高兴解释:-)

Jas*_*ski 6

在Windows上,您不指定文件或目录名称的编码.在NTFS上,它们总是用基本上是UTF-16的编码.只要您正确读入字符串,CreateDirectory就会执行您想要的操作.我怀疑你要么没有把你的UTF-8文件读成UTF-8,要么你的文件实际上不是UTF-8.在调用CreateDirectory之前,先查看调试器的字符串值.