【发布时间】:2012-05-02 14:15:55
【问题描述】:
我从 utf-8 编码文件中读取数据。该文件的部分内容然后用作新创建的文件夹的名称。但是,我的文件夹名称是:
bohou�_120328 而不是 bohouš_120328
如何为新创建的文件夹的名称设置正确的编码?谢谢。
编辑:
我正在以这种方式从文件中读取信息:
System.IO.StreamReader file = new System.IO.StreamReader(nameOfFile);
while ((j = file.ReadLine()) != null) {
//manipulating string in j
}
然后用
创建目录if (Directory.Exists(folder) == false) {
Console.WriteLine("creating directory " + folder);
System.IO.Directory.CreateDirectory(@folder);
}
如果我在我的 Windows 7 64 位计算机上运行我的应用程序,一切都很好。但是,如果我在其他装有 WinXP 等旧系统的计算机上运行,编码就是错误的,看起来像这样
bohou�_120328
在使用变量创建文件夹之前,我将 i 写入输出,但一切都很好。甚至文件夹名称也可以。但不幸的是,只是在我的电脑上。
edit2:
事情变得越来越奇怪。我使用此代码How do I remove diacritics (accents) from a string in .NET? 删除变音符号,因为没有变音符号的名称对我来说很好。
但是,再说一遍:
- 在我的计算机上运行代码会生成 bohous_120328
- 在其他计算机上运行代码和我的闪存盘生成 bohou�_120328
我发誓这是相同的代码,因为我复制了我的 .exe 文件。
调试器说在创建文件夹之前问题已经存在于我的字符串变量中。我不明白,在这种情况下,环境如何影响我的变量。
很乐意解释:-)
【问题讨论】:
-
Directory.CreateDirectory(@"Bohouš"); Console.WriteLine("{0}", Directory.Exists(@"Bohouš"));输出True。 -
@Nick 我刚刚添加了代码。
-
@sixlettervariables 你是对的,这也适用于我的电脑,但不适用于其他电脑
-
您在 XP 机器上写入的分区类型是什么? FAT32? NTFS?
-
在 XP 机器上有 NTFS,我正在写入桌面上的文件夹 (C:)