2010-10-26 44 views
9

Có một số bài đăng trên internet về chủ đề này, tuy nhiên không ai trong số họ có thể cách ly và giải quyết vấn đề.Hiển thị các ký tự unicode trong TextView Android

Tôi đang cố gắng hiển thị một số ký hiệu mã hóa UTF-8 đặc biệt được lưu trữ trong cơ sở dữ liệu SQLite bằng cách sử dụng TextView, tuy nhiên tất cả nó hiển thị là hộp. Tôi hiểu điều này có nghĩa là phông chữ phù hợp chưa được cài đặt. Nhưng khi tôi in những biểu tượng này bằng phông chữ Arial trên Mac, nó hoạt động.

Tôi đang cố gắng sử dụng kiểu chữ Arial trên thiết bị và trình mô phỏng.

Bất kỳ lời khuyên nào.

Trả lời

3

Nếu tôi hiểu chính xác tình huống của bạn, bạn có thể muốn xem xét phương thức StringEscapeUtils.unescapeXml(). Nó có trong tệp common-lang.jar có sẵn tại đây: http://commons.apache.org/lang/

Nó sẽ lấy các ký hiệu được mã hóa (ví dụ ' cho dấu nháy đơn) và đưa bạn đến một ký tự phù hợp.

7

Nó hoạt động trên máy Mac của bạn vì phông chữ được mac sử dụng chứa các ký tự đặc biệt đó. Sẽ không thể tạo một tệp phông chứa tất cả các ký tự được xác định trong unicode. Phông chữ Trung Quốc là một ví dụ hay: không ai trong số chúng chứa tất cả ~ 60.000 ký tự tiếng Trung được biết bởi vì tệp phông chữ sẽ rất lớn và không sử dụng được.

Bạn có thể thử sử dụng phông chữ từ máy Mac trên Android (có thể là vấn đề bản quyền - thử tìm phông chữ miễn phí chứa ký tự: đóng gói tệp (ttf) trong ứng dụng của bạn, ví dụ trong thư mục/asset và sau đó trong tải ứng dụng của bạn mà phông chữ với

typeface Kiểu chữ = Typeface.createFromAsset (assetmanager, "fontfile.ttf");

bạn có thể sau đó sử dụng điều này trong một TextView như vậy:

Chế độ xem văn bản = (TextView) findById (R.id.mytext);

view.setTypeFace (typeFace);

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