2008-10-20 20 views

Trả lời

6

Trong Windows có 2 vấn đề hiển thị thông thường xảy ra khi cố gắng để hiển thị các ký tự Unicode:

  1. văn bản đôi khi xuất hiện như dấu hỏi

    • này xảy ra khi dữ liệu Unicode được chuyển đổi thành một 8 bộ mã hóa ký tự-bit (hoặc các ký tự nhiều byte kỹ thuật) thường thông qua bảng mã hệ thống (nhưng các trang mã khác có thể được chỉ định trong các cuộc gọi chuyển đổi). Nếu bộ ký tự 8 bit mục tiêu không bao gồm các ký tự cần thiết, bất kỳ ký tự nào không thể đại diện trong bộ ký tự đích được chuyển đổi thành dấu hỏi.
  2. văn bản đôi khi xuất hiện như hộp

    • Đây là một vấn đề với phông chữ không có glpyh cho một nhân vật cụ thể. Các hộp hiển thị khi có sự không khớp giữa các ký tự Unicode trong tài liệu và các ký tự được hỗ trợ bởi phông chữ. Cụ thể, các hộp đại diện cho các ký tự không được phông chữ đã chọn hỗ trợ.
0

Về cơ bản bạn đã làm hỏng văn bản. Bạn đang dùng văn bản Unicode trong một mã hóa và sau đó đã chuyển đổi nó sang mã hóa khác mà không kiểm tra xem mã hóa đích có chứa tất cả các ký tự trong văn bản nguồn hay không. Đã làm như vậy bạn đã có một loạt các sai ngữ pháp.

cách để làm điều này bao gồm:

  1. Xử lý UTF-8 văn bản như ANSI (mà không chuyển đổi thành một giá trị mã trang đầu tiên)
  2. Chuyển đổi văn bản Unicode vào mã trang mà không kiểm tra nếu mã -page có các ký tự phù hợp trong đó.
1

Điều đó có nghĩa là văn bản Unicode của bạn đang được chuyển đổi thành văn bản ANSI ở đâu đó. Vì các ký tự Unicode ngoài Latin-1 không thể được chuyển đổi thành ANSI, chúng được chuyển thành các dấu chấm hỏi. Đảm bảo rằng chương trình của bạn được biên dịch bằng hỗ trợ Unicode (tức là các ký hiệu tiền xử lý UNICODE và _UNICODE đượC#defined bởi dự án của bạn), để bạn luôn gọi các phiên bản Unicode thích hợp của các chức năng Windows khác nhau.

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