0

我有一个文本文件,我将其转换为 unicode,然后想将内容保存到文件中。我想以两种格式保存在文件中:

  1. 在 unicode 中
  2. 英文字符(如 file.doc)

UnicodeEncoding u = new UnicodeEncoding();
byte[] filebytes = u.GetBytes("C:/file.doc");
File.WriteAllBytes(@"C:/uni.doc", filebytes); // unicode
File.WriteAllBytes(@"C:/ori.doc", filebytes); // As the Original file
4

2 回答 2

3

字节就是字节:只是 8 位二进制数。

编码仅适用于text,如果您进行了二进制读取,您将不会得到它。

如果您想以一种编码读取文本文件并以另一种编码写入,您可以这样做:

Encoding sourceEncoding = Encoding.UTF8  ; // or whatever encoding the source file is encoded with
Encoding targetEncoding = Encoding.UTF32 ; // or whatever destination encoding you desire
string   data           = File.ReadAllText( @"C:\original.txt" , sourceEncoding ) ;
File.WriteAllText( @"C:\different-encoding.txt" , data , targetEncoding ) ;

您应该记住,字符串在 CLR 基础结构内部表示为 Unicode 文本的 UTF-16 编码。

于 2013-09-17T21:17:09.640 回答
0

GetBytes 将字符串转换为字节,不以文件路径为输入。您必须使用 StreamReader 来读取文件文本。要获取编码字节,您只需将读取字节传递给 System.Text.Encoding.UTF16.GetBytes(stringIJustReadFromFile);

对于 ASCII,使用 System.Text.Encoding.ASCII.GetBytes(stringIJustReadFromFile),您可以使用 StreamWriter 将它们写入其他文件。

于 2013-09-17T20:58:49.877 回答