我正在尝试将一个UTF-8字符串(越南语)写入C#Console,但没有成功。我在Windows 7上运行。
我尝试使用将Encoding
转换为string
到char[]
的{{1}}类,然后转换为String,但没有帮助,字符串直接从数据库输入
以下是一些示例
TôitênlàĐức,cuộscốngthậtvuivẻ tuyệtvời
它不显示byte[]
或Đ
等特殊字符,而是显示ứ
,比编码类更糟糕。
有没有人可以尝试这个或知道这个问题?
我的代码
?
这里是出色的输出
static void Main(string[] args)
{
XDataContext _new = new XDataContext();
Console.OutputEncoding = Encoding.GetEncoding("UTF-8");
string srcString = _new.Posts.First().TITLE;
Console.WriteLine(srcString);
// 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.
Console.WriteLine("UTF-8 Bytes: {0}", BitConverter.ToString(utf8String));
Console.WriteLine("ASCII Bytes: {0}", BitConverter.ToString(asciiString));
// Convert UTF-8 and ASCII encoded bytes back to UTF-16 encoded
// string and write.
Console.WriteLine("UTF-8 Text : {0}", Encoding.UTF8.GetString(utf8String));
Console.WriteLine("ASCII Text : {0}", Encoding.ASCII.GetString(asciiString));
Console.WriteLine(Encoding.UTF8.GetString(utf8String));
Console.WriteLine(Encoding.ASCII.GetString(asciiString));
}
答案 0 :(得分:7)
class Program
{
[DllImport("kernel32.dll")]
static extern bool SetConsoleOutputCP(uint wCodePageID);
static void Main(string[] args)
{
SetConsoleOutputCP(65001);
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine("tést, тест, τεστ, ←↑→↓∏∑√∞①②③④, Bài viết chọn lọc");
Console.ReadLine();
}
}
输出屏幕截图(使用Consolas或其他具有上述所有字符的字体):
答案 1 :(得分:0)
您需要将Console.OutputEncoding
设置为与UTF-8
匹配。
可能类似于:
Console.OutputEncoding = System.Text.Encoding.UTF8;
答案 2 :(得分:0)
您在控制台窗口中使用的字体是否支持您尝试显示的字符?
答案 3 :(得分:-2)
这是cmd.exe控制台的问题。它不支持unicode。 [与C#/ .NET没什么关系]
如果可以或写入文件,请尝试将其更改为GUI应用程序。