【问题标题】:C# russian cp1251 Encode/DecodeC# 俄语 cp1251 编码/解码
【发布时间】:2021-07-01 14:07:39
【问题描述】:

我将 ASCII 1251 表用于俄语字母。所以我需要一个 C# 函数来将 char 转换为 1251 十进制代码,反之亦然。

例如俄语“а”是 224,219 是“Ы”。

有什么方法可以不使用所有字母的硬编码值的字典吗?

【问题讨论】:

    标签: c# .net cp1251


    【解决方案1】:

    只需使用 Encoding 类。

    var enc = Encoding.GetEncoding(1251);
    Console.WriteLine(enc.GetBytes("Ы")[0]); //will print 219
    Console.WriteLine(enc.GetString(new byte []{219})); //will pring Ы
    

    【讨论】:

    • 你能解释一下这个 getBytes() 以及你为什么使用 [0]。如果我将整个单词或句子传递给这个函数,我会得到一个整数数组吗?就像enc.GetBytes("ЫЫЫЫЫ") 给了我 [219, 219, 219, 219, 219]。最奇怪的是new byte。那是什么意思?我知道我们正在创建一个新的字节对象数组,但是我可以将很多值传递给这个 { some values }
    • GetBytes 将返回字节数组。所以,我只得到第一个字节来显示单个字符的确切输出。如果您将传递整个单词,那么您将获得整个单词的字节(因此,您的示例是正确的)。 new byte[]{219} 只是一个带有初始化的数组声明,所以它是一个元素的字节数组。你绝对可以像这样传递许多值:new byte[]{1, 2, 3, etc}。你也可以只传递一个单独创建的数组。
    • 非常感谢您的正确解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2016-12-27
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多