将希腊字符转换为终端十六进制字体

时间:2018-04-25 14:24:31

标签: c# globalization

我需要将希腊字符转换为charmap终端字体十六进制值。 Image

示例如何转换

string test="ΞΥΔΙ";

到十六进制值“\ 0x8D .......等等。

如果将从字符串转换为十六进制,则会出现错误的十六进制值

 byte[] ba = Encoding.GetEncoding(1253).GetBytes("ΨΓΣΦ");
        var hexString = BitConverter.ToString(ba);
        MessageBox.Show(hexString);

字符'Ξ'的示例我得到0xCE

2 个答案:

答案 0 :(得分:1)

你很近:

  1. 将代码页从 Windows (Win- 1253 )更改为 MS DOS 1( 737
  2. 如果您希望看到代码表示为字符串,建议您使用 Linq String.Join
  3. 这样的事情:

     // Terminal uses MS DOS Code Page which is 737 (not Win-1253)
     byte[] ba = Encoding.GetEncoding(737).GetBytes("ΞΥΔΙ"); 
    
     // Let's use Linq to print out a test
     var hexString = string.Join(" ", ba.Select(c => $"0x{(int)c:X2}"));
    
     Console.Write(hexString);
    

    结果:

     0x8D 0x93 0x83 0x88
    

    请注意,Ξ代码为0x8D

答案 1 :(得分:0)

从我测试的内容来看,你的实现确实没问题。

我刚使用了Windows计算器和Wikipedia 1253编码表。

我搜索了'Ξ'字符,虽然我对希腊字符一无所知,但一个简单的搜索显示该字符确实匹配0xCE(字体看起来很时髦,但浏览器似乎喜欢它)。 / p>

enter image description here