UTF-16 được sử dụng cho các văn bản trong hệ điều hành API trong Microsoft Windows 2000 / XP / 2003 / Vista / 7/8 / CE. [11] hệ thống cũ Windows NT (trước Windows 2000) chỉ hỗ trợ UCS-2. [12] Trong Windows XP, không có điểm mã trên U + FFFF được bao gồm trong bất kỳ font giao với Windows cho các ngôn ngữ châu Âu. [13] [14] Tập tin và mạng dữ liệu có xu hướng là một kết hợp của UTF-16, UTF-8, và byte di sản . mã hóa hệ thống của IBM iSeries định mã trang CCSID 13488 cho UCS-2 ký tự mã hóa, CCSID 1200 cho UTF-16 mã hóa, và CCSID 1208 cho UTF-8 mã hóa [15]. UTF-16 được sử dụng bởi hệ điều hành Qualcomm BREW; các môi trường .NET; và Qt chéo nền tảng đồ họa phụ tùng bộ công cụ. Symbian OS được sử dụng trong điện thoại di động Nokia S60 và Sony Ericsson điện thoại di động sử dụng UIQ UCS-2. điện thoại di động iPhone sử dụng UTF-16 cho dịch vụ tin nhắn thay vì UCS-2 được mô tả trong 3GPP TS 23,038 (GSM) và IS-637 (CDMA) tiêu chuẩn. [16] Các hệ thống tập tin Joliet, được sử dụng trong đĩa CD-ROM phương tiện truyền thông, mã hóa tập tin tên bằng cách sử UCS-2BE (lên đến sáu mươi bốn ký tự Unicode cho mỗi tên file). Các môi trường ngôn ngữ Python chính thức chỉ sử dụng UCS-2 trong nội bộ kể từ phiên bản 2.0, nhưng UTF-8 để giải mã "Unicode" sản xuất đúng UTF-16. Kể từ Python 2.2, "rộng" xây dựng của Unicode được hỗ trợ mà sử dụng UTF-32 thay vì; [17] này được sử dụng chủ yếu trên Linux. Python 3.3 không còn bao giờ sử dụng UTF-16, thay vì chuỗi được lưu trữ tại một ASCII / Latin-1, UCS-2, hay UTF-32, phụ thuộc vào các điểm mã là trong chuỗi, với một phiên bản UTF-8 cũng bao gồm để chuyển đổi lặp đi lặp lại để UTF-8 đang nhanh chóng. [18] Java ban đầu được sử dụng UCS-2, và hỗ trợ thêm tính bổ trợ UTF-16 trong J2SE 5.0. Trong nhiều ngôn ngữ chuỗi trích dẫn cần một cú pháp mới cho trích dẫn các ký tự không BMP, như các " uXXXX" cú pháp một cách rõ ràng giới hạn bản thân đến 4 chữ số hex. Phổ biến nhất (được sử dụng bởi C #, D và một số ngôn ngữ khác) là sử dụng một chữ hoa 'U' với chữ số 8 hex như " U0001D11E" [19] Trong Java 7 biểu thức thông thường và ICU và Perl, cú pháp " x {1D11E} "phải được sử dụng. Trong nhiều trường hợp khác (như Java bên ngoài của biểu thức thông thường) [20] là cách duy nhất để có được các ký tự không BMP là nhập nửa đại diện cá nhân, ví dụ: " uD834 uDD1E" cho U + 1D11E. Những triển khai tất cả trả lại số đơn vị mã 16-bit thay vì số lượng các điểm mã Unicode khi tương đương với strlen () được sử dụng trên dây của họ, và lập chỉ mục vào một chuỗi trả về đơn vị mã được lập chỉ mục, không phải là điểm mã được lập chỉ mục, [21] [22] [23] điều này dẫn đến một số người cho rằng UTF-16 không được hỗ trợ. Tuy nhiên thuật ngữ "nhân vật" được định nghĩa và được sử dụng theo nhiều cách trong các thuật ngữ Unicode, [24] do đó, một số rõ ràng là không thể và không có lý do cho strlen để cố gắng trả lại bất kỳ giá trị như vậy. Hầu hết các nhầm lẫn là do tài liệu ASCII thời lỗi thời bằng cách sử dụng thuật ngữ "nhân vật" khi một kích thước cố định "byte" hoặc "octet" được dự định
đang được dịch, vui lòng đợi..
