C# 中的哪种编码等同于此 java 代码? "Charles Okwuagwu".getBytes();
Which encoding is the C# equivalent to this java code? "Charles Okwuagwu".getBytes();
假设我在 Java 中有此代码:"Charles Okwuagwu".getBytes();
在 c# 中这只是 Encoding.UTF8.GetBytes("Charles Okwuagwu");
我的问题是:
1)Java 对字符串使用 UTF16
2) sting 内容基本上只是 ASCII
在 C# 中,简单地使用 Encoding.ASCII.GetBytes("Charles Okwuagwu");
不是等价的吗?
编辑
我在 .net 中运行了这个小测试:
Console.WriteLine("Default:{0}", B2H(Text.Encoding.Default.GetBytes("Charles Okwuagwu")))
Console.WriteLine("ASCII:{0}", B2H(Text.Encoding.ASCII.GetBytes("Charles Okwuagwu")))
Console.WriteLine("BigEndianUnicode:{0}", B2H(Text.Encoding.BigEndianUnicode.GetBytes("Charles Okwuagwu")))
Console.WriteLine("Unicode:{0}", B2H(Text.Encoding.Unicode.GetBytes("Charles Okwuagwu")))
Console.WriteLine("UTF32:{0}", B2H(Text.Encoding.UTF32.GetBytes("Charles Okwuagwu")))
Console.WriteLine("UTF7:{0}", B2H(Text.Encoding.UTF7.GetBytes("Charles Okwuagwu")))
Console.WriteLine("UTF8:{0}", B2H(Text.Encoding.UTF8.GetBytes("Charles Okwuagwu")))
结果:
Default:436861726C6573204F6B777561677775
ASCII:436861726C6573204F6B777561677775
BigEndianUnicode:0043006800610072006C006500730020004F006B007700750061006700770075
Unicode:43006800610072006C006500730020004F006B00770075006100670077007500
UTF32:430000006800000061000000720000006C0000006500000073000000200000004F0000006B000000770000007500000061000000670000007700000075000000
UTF7:436861726C6573204F6B777561677775
UTF8:436861726C6573204F6B777561677775
UTF8、UTF7、ASCII 似乎给出了相同的字节。但是 Java 字符串默认为 UTF16 ...
由于 Java 使用 UTF16,等效的 .Net 代码为:
Encoding.Unicode.GetBytes("Charles Okwuagwu")
参见:http://msdn.microsoft.com/en-us/library/system.text.encoding.unicode(v=vs.110).aspx
String.getBytes in Java 使用平台默认编码。
所以 C# 等价物是:
Encoding.Default.GetBytes("Charles Okwuagwu");
假设我在 Java 中有此代码:"Charles Okwuagwu".getBytes();
在 c# 中这只是 Encoding.UTF8.GetBytes("Charles Okwuagwu");
我的问题是: 1)Java 对字符串使用 UTF16 2) sting 内容基本上只是 ASCII
在 C# 中,简单地使用 Encoding.ASCII.GetBytes("Charles Okwuagwu");
不是等价的吗?
编辑 我在 .net 中运行了这个小测试:
Console.WriteLine("Default:{0}", B2H(Text.Encoding.Default.GetBytes("Charles Okwuagwu")))
Console.WriteLine("ASCII:{0}", B2H(Text.Encoding.ASCII.GetBytes("Charles Okwuagwu")))
Console.WriteLine("BigEndianUnicode:{0}", B2H(Text.Encoding.BigEndianUnicode.GetBytes("Charles Okwuagwu")))
Console.WriteLine("Unicode:{0}", B2H(Text.Encoding.Unicode.GetBytes("Charles Okwuagwu")))
Console.WriteLine("UTF32:{0}", B2H(Text.Encoding.UTF32.GetBytes("Charles Okwuagwu")))
Console.WriteLine("UTF7:{0}", B2H(Text.Encoding.UTF7.GetBytes("Charles Okwuagwu")))
Console.WriteLine("UTF8:{0}", B2H(Text.Encoding.UTF8.GetBytes("Charles Okwuagwu")))
结果:
Default:436861726C6573204F6B777561677775
ASCII:436861726C6573204F6B777561677775
BigEndianUnicode:0043006800610072006C006500730020004F006B007700750061006700770075
Unicode:43006800610072006C006500730020004F006B00770075006100670077007500
UTF32:430000006800000061000000720000006C0000006500000073000000200000004F0000006B000000770000007500000061000000670000007700000075000000
UTF7:436861726C6573204F6B777561677775
UTF8:436861726C6573204F6B777561677775
UTF8、UTF7、ASCII 似乎给出了相同的字节。但是 Java 字符串默认为 UTF16 ...
由于 Java 使用 UTF16,等效的 .Net 代码为:
Encoding.Unicode.GetBytes("Charles Okwuagwu")
参见:http://msdn.microsoft.com/en-us/library/system.text.encoding.unicode(v=vs.110).aspx
String.getBytes in Java 使用平台默认编码。 所以 C# 等价物是:
Encoding.Default.GetBytes("Charles Okwuagwu");