Trong mã JavaScript của mình, tôi cần soạn tin nhắn tới máy chủ ở định dạng sau:
<size in bytes>CRLF
<data>CRLF
Thí dụ:
3
foo
Dữ liệu có thể chứa các ký tự unicode. Tôi cần gửi chúng dưới dạng UTF-8.
Tôi đang tìm cách nhiều trình duyệt nhất để tính độ dài của chuỗi theo byte trong JavaScript.
Tôi đã thử điều này để soạn tải trọng của mình:
return unescape(encodeURIComponent(str)).length + "\n" + str + "\n"
Nhưng nó không cung cấp cho tôi kết quả chính xác cho các trình duyệt cũ hơn (hoặc, có thể các chuỗi trong các trình duyệt đó trong UTF-16?).
Bất kì manh mối nào?
Cập nhật:
Ví dụ: độ dài tính bằng byte của chuỗi ЭЭХ! Naïve?
trong UTF-8 là 15 byte, nhưng một số trình duyệt lại báo cáo là 23 byte.