2009-11-13 81 views
2

encoding.utf8.getbytes我对C#的工作,尝试下面的代码问题在C#

byte[] buffer = new byte[str.Length]; 
buffer = Encoding.UTF8.GetBytes(str); 

在STR我已经得到了长时间的数据,但我已经在得到完整的编码字节有问题。 请告诉我发生了什么问题,我该如何解决这个问题?

+0

这里没有什么可能是“布莱恩错误”。我相信你将不得不清除你的问题。你认为什么是错的,你期望的是什么。 – 2009-11-13 16:14:09

+0

感谢您的回复... 我第一次获得了完整的编码...但是当第二次调用时出现问题...是否对用于获取“str”的长度有任何限制bytes ... bcoz str我正在使用包含冗长的字符串数据 – 2009-11-13 16:18:05

回答

2

的正确使用方法是:

byte[] buffer = Encoding.UTF8.GetBytes(str); 
6

你为什么要创建一个新的字节数组然后忽略它?在调用GetBytes之前,buffer的值将被对GetBytes返回的新字节数组的引用替换。

但是,您不应该期望字符串的UTF-8编码版本与原始字符串的字符长度相同,除非它是全部ASCII。 U + 007F上的任何字符至少占用2个字节。

这里的大图是什么?你想达到什么目的,为什么字节数组的长度对你来说很重要?

0

一般情况下,你不应该做出长度/大小的任何假设/用编码,字节和字符/字符串时计数。让Encoding对象完成它们的工作,然后查询该信息的结果对象。

话虽如此,我不相信有编码类的固有长度限制。我有几个生产应用程序在相反方向进行相同的工作(字节编码为字符),这些应用程序正在处理数十兆字节的字节数组。