2008-10-21 54 views
11

Bộ mã GB18030 của Trung Quốc khác với Unicode như thế nào?GB18030 khác với Unicode như thế nào?

Cần có những kỹ thuật đặc biệt nào để xử lý GB18030?

Có thư viện nào (mã nguồn mở) để xử lý GB18030 không?

+3

bạn nhầm lẫn các bộ ký tự (như Unicode) với các lược đồ mã hóa ký tự (như GB18030, ISO Latin-1..15, UTF- [7,8,16,32]). – Sebastian

Trả lời

13

Theo Wikipedia article on GB18030, "GB18030 có thể được coi là định dạng chuyển đổi Unicode (tức là mã hóa tất cả các điểm mã Unicode) duy trì tính tương thích với bộ ký tự cũ". Nghĩa là, tất cả các ký tự Unicode có thể được mã hóa trong GB18030, nhưng chúng sẽ được mã hóa với các chuỗi byte khác nhau hơn sẽ được tạo bằng UTF-8 hoặc UTF-16. Việc xử lý mã hóa GB18030 không yêu cầu bất kỳ kỹ thuật đặc biệt nào hơn là bắt buộc đối với bất kỳ mã hóa không phải Unicode nào khác.

ICU project là thư viện nguồn mở (dành cho C hoặc Java) có hỗ trợ đầy đủ cho nhiều mã hóa khác nhau, bao gồm GB18030. Thông tin về chuyển đổi giữa các mã hóa khác nhau với ICU có thể được tìm thấy here.

+0

Cảm ơn thông tin. Tôi nhận thức được ICU; Tôi không biết rằng nó xử lý GB18030 quá, mặc dù. –

+1

Wikipedia sai khi nói rằng "GB18030 có thể được coi là một định dạng chuyển đổi Unicode". Bất cứ ai đã viết mà không hiểu ý nghĩa hoặc "Định dạng chuyển đổi". Người ta có thể xem xét rằng hợp lệ nếu có một cách thuật toán để ánh xạ giữa GB18030 và Unicode, mà không có bảng ánh xạ. Nếu các bảng ánh xạ có liên quan, thì hai bảng này chỉ là hai mã hóa độc lập có thể bao gồm cùng một bộ ký tự. Giống như KOI8-R không phải là "Định dạng chuyển đổi" của iso-8859-5 và Shift-JIS không phải là "Định dạng chuyển đổi" của EUC-JP –

+4

@MihaiNita: Theo bảng thuật ngữ Unicode, [định dạng chuyển đổi] (http://unicode.org/glossary/#transformation_format) là một "ánh xạ từ một chuỗi ký tự được mã hóa tới một chuỗi đơn vị mã duy nhất (thường là các byte)" và một chuỗi ký tự [mã hóa] (http://unicode.org)/glossary/# coded_character_sequence) là "chuỗi thứ tự của một hoặc nhiều điểm mã". Miễn là có một bản đồ của mỗi mã Unicode trỏ đến một loạt các byte, có vẻ như nó có thể được coi là một "định dạng chuyển đổi Unicode". –

12

Cần có những kỹ thuật đặc biệt nào để xử lý GB18030?

Điều quan trọng nhất cần lưu ý là, không giống như UTF-8, GB18030 cho phép các byte ASCII xảy ra trong bảng mã của ký tự nhiều byte. (Ví dụ: 'ß' được mã hóa dưới dạng các byte 81 , trong đó có mã hóa ASCII là '0' và '8'.) Điều này có nghĩa là bạn không thể sử dụng định dạng byte đơn giản find/index.

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