2012-03-18 35 views
18

Tôi có một chuỗi là utf8.Kích thước chuỗi utf-8 Calc theo byte?

Tôi cần có kích thước của nó. (byte)

Nó luôn luôn x2? // Tôi có nghĩa là nhân với 2

có chức năng .net nào không?

p.s.

im hỏi câu hỏi này bởi vì các mới nhất của tôi question ... Tôi cần (trong mempry tập tin ánh xạ) để calc bù đắp của một chuỗi (utf8) - từ quá trình khác ..

+3

"Tôi có chuỗi utf8". - không có trong .NET. Bạn có một chuỗi (là UTF-16), hoặc bạn có một mảng các byte đại diện cho một chuỗi được mã hóa UTF-8. Trong trường hợp sau bạn chỉ có thể sử dụng 'Array.Length'. – porges

+0

Với điều "x2" ... Bạn có chắc là bạn không sử dụng UTF-16 không? –

+0

@ Porges hiện mỗi char được biểu diễn bằng 2 byte - ngay cả khi nó từ bảng 0.ci27 ascii? –

Trả lời

42

Không, nó không phải lúc nào cũng là x2 cho UTF-8 và thay đổi dựa trên nội dung thực tế. Đối với các ký tự ASCII, nó là 1 byte, nhưng có thể đi vào một vài byte cho các giá trị mã điểm lớn. Bạn muốn:

string s = // your string 
int len = Encoding.UTF8.GetByteCount(s); 
+0

cảm ơn marc ...... (hãy xem bản chỉnh sửa của tôi - để xem nó xuất phát từ đâu .. Và tại sao tôi hỏi nó :)) –

+0

@Royi sau đó bạn có thể muốn sử dụng quá tải chấp nhận byte *, nhưng nó phụ thuộc vào kịch bản chính xác –

+0

@MarcGravell xin lỗi, có vẻ như tôi không hiểu bạn ... cho phép nói tôi có một chuỗi chứa các ký tự thông thường (0..127) và các ký tự đặc biệt. ... một cái gì đó như thế này: 'string s =" abc אבג ";' bây giờ - cho phép nói rằng tôi muốn đi đến cuối của vị trí TRONG NHỚ .... làm thế nào tôi có thể calc ** có bao nhiêu byte để bù đắp ** (mmf ...)? –

Các vấn đề liên quan