繁体   English   中英

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)字符串内容基本上只是ASCII

简单地使用Encoding.ASCII.GetBytes("Charles Okwuagwu");在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中的String.getBytes使用平台的默认编码。 因此,C#等效项为:

Encoding.Default.GetBytes("Charles Okwuagwu");

由于Java使用UTF16,因此等效的.Net代码为:

Encoding.Unicode.GetBytes("Charles Okwuagwu")

请参阅: http : //msdn.microsoft.com/zh-cn/library/system.text.encoding.unicode(v=vs.110).aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM