2012-05-21 41 views
6

Tôi đang cố hiển thị văn bản arabic bằng java nhưng nó hiển thị các ký tự rác (Ví dụ: ¤ [ï߯ [î) hoặc đôi khi chỉ có dấu hỏi khi tôi in. Làm thế nào để tôi làm cho nó in arabic. Tôi nghe nói rằng một cái gì đó liên quan đến unicode và UTF-8. Đây là lần đầu tiên tôi làm việc với các ngôn ngữ vì vậy không có ý tưởng. Tôi đang sử dụng Eclipse Indigo IDE.In chuỗi tiếng ả rập trong java

EDIT: Nếu tôi sử dụng mã hóa UTF-8 thì "¤ [ï߯ [î" ký tự đang trở thành "????????" nhân vật.

+1

Bạn có muốn in trong ứng dụng dành cho máy tính để bàn hoặc ứng dụng web không? –

+1

nơi zou in uotput của bạn? Vào bàn điều khiển eclipse? hãy cẩn thận, các dòng lệnh chuẩn không hỗ trợ unicode. – Hurda

+0

Bàn điều khiển Eclipse chỉ ghi lại đầu ra của một tiến trình mà * là * Unicode, Hurda. – Joey

Trả lời

7

Để bắt đầu, bạn có thể xem here. Điều này sẽ cho phép bạn làm cho unicode in của Eclipse trong giao diện điều khiển của nó (mà tôi không biết nếu nó là cái gì mà Eclipse hỗ trợ ra khỏi hộp mà không cần thêm bất kỳ chỉnh sửa nào)

Nếu điều đó không giải quyết được vấn đề bạn có thể có vấn đề với mã hóa chương trình bạn đang sử dụng, vì vậy bạn có thể muốn tạo chuỗi trong một số cách tương tự như sau:

String str = new String("تعطي يونيكود رقما فريدا لكل حرف".getBytes(), "UTF-8");

này ít nhất làm việc cho tôi.

+1

Tôi đã thử với điều này nhưng, nó hiện đang hiển thị tất cả các dấu hỏi .. –

+0

@ Chandu-Indyaah: Bạn đã thử cả hai? Ngoài ra, chính xác những gì bạn đang cố gắng in? Phương thức trên làm việc cho tôi trong giao diện điều khiển và 'JFrame'. – npinti

+0

'.getBytes()' sử dụng mã hóa mặc định nền tảng, về cơ bản là một giá trị ngẫu nhiên. Chuyển đổi chuỗi thành byte và sau đó lại một lần nữa là hoàn toàn dư thừa nếu mã hóa phù hợp, và làm hỏng chuỗi nếu chúng không. –

2

Nếu bạn nhúng văn bản theo nghĩa đen trong mã, hãy đảm bảo bạn đã đặt mã hóa cho dự án của mình một cách chính xác.

+0

Không, đầu ra đến từ cuộc gọi webservice –

+3

Trong trường hợp đó, bạn nên sử dụng mã hóa chính xác để đọc từ phản hồi webservice. – Joey

1

Điều này dành cho Java SE, Java EE hoặc Java ME? Nếu điều này là dành cho Java ME, bạn phải tạo GlyphUtils tùy chỉnh nếu bạn sử dụng LWUIT. Download this file: danh sách http://dl.dropbox.com/u/55295133/U0600.pdf Look mã hóa unicode .. Và nhìn vào chủ đề này: https://stackoverflow.com/a/9172732/1061371 trong câu trả lời (bưu điện) của Mohamed Nazar rằng thay đổi nội dung bởi Bernama Alex Kliuchnikau, "Mã dưới đây có thể được sử dụng cho hiển thị văn bản arabic trong J2ME String s=new String("\u0628\u06A9".getBytes(), "UTF-8"); trong đó \u0628\u06A9 là unicode của hai chữ cái arabic " Nhìn vào tệp U0600.pdf, vì vậy chúng ta có thể thấy rằng Mohamed Nazar và Alex Kliuchnikau đưa ra ví dụ để tạo ký tự" ba "và" kaf "bằng tiếng Ả Rập.

Sau đó, điểm cuối cùng bạn phải xem xét là: "Đảm bảo rằng ký tự unicode hỗ trợ giao diện người dùng của bạn (nghĩa là tiếng Ả Rập)". Giống như LWUIT không hỗ trợ unicode (tôi có nghĩa là arabic) ký tự. Bạn nên tạo mã tùy chỉnh nếu có nghĩa là ứng dụng của bạn đang sử dụng LWUIT.

+0

không hoạt động – Error

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