【发布时间】:2018-08-02 12:21:46
【问题描述】:
我使用的是 Windows 10(也许这是问题所在:-))
我有一个简单的代码,可以从控制台读取希伯来语文本,然后打印它的 HEX\DEC 值
但他一直给我00 在控制台窗口上我可以看到希伯来字母
有什么理由吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using System.Net;
using System.Net.Sockets;
using System.Timers;
using System.IO;
namespace HebTest
{
class Program
{
static public void Main(string[] args)
{
Console.WriteLine("Write your message here - ");
string StringMessage = Console.ReadLine();
Console.WriteLine("print string - " + StringMessage);
///message in HEX
byte [] ByteMessage = Encoding.Default.GetBytes(StringMessage);
string HexMessage = BitConverter.ToString(ByteMessage);
Console.WriteLine("MSG in HEX - " + HexMessage);
Console.Write(
Encoding.Default.GetString(ByteMessage)
);
Console.WriteLine();
foreach (byte p in ByteMessage)
{
Console.Write((char)p + " - " + p );
Console.WriteLine("");
}
}
例如我输入这个文本 “测试אבגד” 这就是我得到的:
Write your message here -
test אבגד ---> this I wrote on the console
print string - test
MSG in HEX - 74-65-73-74-20-00-00-00-00
test
t - 116
e - 101
s - 115
t - 116
- 32
- 0
- 0
- 0
- 0
我错过了什么?
谢谢,
【问题讨论】:
-
这几乎肯定是问题所在:
byte [] ByteMessage = Encoding.Default.GetBytes(StringMessage);。您的系统默认编码是什么,它可以处理希伯来语字符吗?您想要查看结果的编码是什么? (你真的要使用编码吗?这里更大的目标是什么?) -
1.我怎么知道我的系统默认编码是什么? - 我猜是希伯来语 - 但我不知道。你可以在屏幕上看到希伯来语\在记事本上\等... 2. 我想成为 abel 看到我输入的消息\字符 3. 有趣的部分是 - 它昨天对我有用 - 然后 windows10 决定重新启动因为一些愚蠢的更新 - 今天它没有工作.....那该怎么办\检查? ***** 我看了 - 时钟和区域 - 区域设置 - 当前系统语言环境 - 希伯来语,也是 beta:使用 Unicode UTF 是标记
-
与其找出
Encoding.Default是什么,我会问自己你真正想要实现的目标是什么。您想要结果的编码是什么?你需要编码吗?您可以直接打印出 Unicode 字符编号,而不将字符串编码为byte[]吗? -
我需要将 HEX 值发送到外部设备 - 这就是为什么我需要查看正确的编码.....
-
那么外部设备期望的编码是什么?出于诊断目的,您可以从显式使用
Encoding.UTF8开始,但您确实需要知道设备期望什么。
标签: c# character-encoding hebrew