有没有办法可以使用c#?
将.txt文件转换为unicode答案 0 :(得分:6)
只有当您知道用于生成.txt
文件的原始编码时(并且这不是C#或.NET语言的限制,这是一个普遍的问题)。
阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!),了解为什么如果您不知道编码,“纯文本”毫无意义。
答案 1 :(得分:5)
如果您只在文本文件中使用ASCII字符,则它们已经是Unicode,编码为UTF-8。
如果您需要不同的编码字符(UTF16 / UCS2等),任何支持Unicode的语言都应该能够读取一个编码并写出另一个编码。
System.Text.Encoding
内容将根据以下示例执行 - 它将UTF16输出为UTF8和ASCII,然后再返回(代码无意中从here被盗)。
using System;
using System.IO;
using System.Text;
class Test {
public static void Main() {
using (StreamWriter output = new StreamWriter("practice.txt")) {
string srcString = "Area = \u03A0r^2"; // PI.R.R
// Convert the UTF-16 encoded source string to UTF-8 and ASCII.
byte[] utf8String = Encoding.UTF8.GetBytes(srcString);
byte[] asciiString = Encoding.ASCII.GetBytes(srcString);
// Write the UTF-8 and ASCII encoded byte arrays.
output.WriteLine("UTF-8 Bytes: {0}",
BitConverter.ToString(utf8String));
output.WriteLine("ASCII Bytes: {0}",
BitConverter.ToString(asciiString));
// Convert UTF-8 and ASCII encoded bytes back to UTF-16 encoded
// string and write.
output.WriteLine("UTF-8 Text : {0}",
Encoding.UTF8.GetString(utf8String));
output.WriteLine("ASCII Text : {0}",
Encoding.ASCII.GetString(asciiString));
Console.WriteLine(Encoding.UTF8.GetString(utf8String));
Console.WriteLine(Encoding.ASCII.GetString(asciiString));
}
}
}
答案 2 :(得分:2)
以下是一个例子:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace utf16
{
class Program
{
static void Main(string[] args)
{
using (StreamReader sr = new StreamReader(args[0], Encoding.UTF8))
using (StreamWriter sw = new StreamWriter(args[1], false, Encoding.Unicode))
{
string line;
while ((line = sr.ReadLine()) != null)
{
sw.WriteLine(line);
}
}
}
}
}
答案 3 :(得分:1)
如果确实需要更改编码(请参阅Pax关于UTF-8是有效Unicode的答案),那么是的,你可以很容易地做到这一点。查看System.Text.Encoding类。
答案 4 :(得分:1)
有一个很好的page on MSDN,包括一个完整的例子:
// Specify the code page to correctly interpret byte values
Encoding encoding = Encoding.GetEncoding(737); //(DOS) Greek code page
byte[] codePageValues = System.IO.File.ReadAllBytes(@"greek.txt");
// Same content is now encoded as UTF-16
string unicodeValues = encoding.GetString(codePageValues);