首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.NET控制台应用程序中的越南字符(UTF-8)

.NET控制台应用程序中的越南字符(UTF-8)
EN

Stack Overflow用户
提问于 2010-02-06 15:11:46
回答 3查看 9K关注 0票数 8

我正在尝试将UTF-8字符串(越南语)写入C#控制台,但没有成功。我在Windows 7上运行。

我尝试使用Encoding类将string转换为char[]byte[],然后将字符串字符串(但没有帮助)直接从数据库中输入。

下面是一些例子

Tín làĐức,cuộc sống thật vui诉ẻtuyệt诉ờI

它不显示像Đ这样的特殊角色.相反,它显示的是?,比编码类要糟糕得多。

有没有人可以试一试或者知道这个问题?

我的代码

代码语言:javascript
运行
复制
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));
}

这是杰出的产出

代码语言:javascript
运行
复制
Nhà báo đi hội báo Xuân
UTF-8  Bytes: 4E-68-C3-A0-20-62-C3-A1-6F-20-C4-91-69-20-68-E1-BB-99-69-20-62-C3-
A1-6F-20-58-75-C3-A2-6E
ASCII  Bytes: 4E-68-3F-20-62-3F-6F-20-3F-69-20-68-3F-69-20-62-3F-6F-20-58-75-3F-
6E
UTF-8  Text : Nhà báo đi hội báo Xuân
ASCII  Text : Nh? b?o ?i h?i b?o Xu?n
Nhà báo đi hội báo Xuân
Nh? b?o ?i h?i b?o Xu?n


Press any key to continue . . .
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-04 10:58:22

代码语言:javascript
运行
复制
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或具有上述所有字符的其他字体):

票数 9
EN

Stack Overflow用户

发布于 2010-02-06 15:17:13

您需要将Console.OutputEncoding设置为与UTF-8匹配。

可能是这样的:

代码语言:javascript
运行
复制
Console.OutputEncoding = System.Text.Encoding.UTF8;
票数 1
EN

Stack Overflow用户

发布于 2010-02-06 15:25:08

在控制台窗口中使用的字体是否支持要显示的字符?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2213541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档