2012-06-27 34 views
12

Xin lưu ý rằng tôi không hỏi tại sao. Và tôi không biết đó có phải là một vấn đề cụ thể của RCP hay không?Tại sao tôi cần phải thoát khỏi unicode trong các tệp nguồn java?

Tệp nguồn java của tôi được mã hóa bằng UTF-8.

Nếu tôi xác định các chuỗi chữ của tôi như thế này:

new Language("fr", "Français"), 
    new Language("zh", "中文") 

Nó hoạt động như tôi mong đợi khi tôi sử dụng chuỗi trong các ứng dụng bằng cách tung ra nó từ Eclipse như một ứng dụng Eclipse:

enter image description here

Nhưng nếu không thành công khi tôi khởi chạy .exe được xây dựng bởi "Thuật sĩ xuất sản phẩm Eclipse":

enter image description here

Giải pháp tôi sử dụng là để thoát khỏi chars như thế này:

new Language("fr", "Fran\u00e7ais"), // Français 
    new Language("zh", "\u4e2d\u6587") // 中文 

Không có vấn đề trong việc này (tất cả các chuỗi khác của tôi là trong các tập tin thuộc tính, chỉ có ngôn ngữ tên được mã hóa) nhưng tôi 'muốn hiểu.

Tôi nghĩ trình biên dịch phải chuyển đổi chuỗi chữ java khi xây dựng the bytecode. Vậy tại sao unicode thoát cần thiết? Có sai khi sử dụng các ký tự unicode cao trong các tệp nguồn java không? Điều gì xảy ra chính xác với những ký tự đó khi biên soạn và trong những gì nó khác với việc xử lý các ký tự thoát? Vấn đề chỉ liên quan đến bộ nhớ cache RCP?

+10

Dường như Eclipse sản phẩm Export Wizard không giải thích tập tin của bạn như UTF-8. Có lẽ bạn cần chạy JVM của Eclipse với bộ mã hóa thành UTF-8 ('-Dfile.encoding = UTF8' trong' eclipse.ini')? –

+1

Trong khi điều này không thực sự giải thích lý do tại sao nó xảy ra nó đề xuất một giải pháp thay thế và chỉ ra rằng thuật sĩ xuất khẩu vì lý do nào dường như không tôn trọng mã hóa của dự án đúng: http://stackoverflow.com/questions/6891079/eclipse- rcp-sai-encoding-khi-deploying-the-product – Jiddo

+0

Để xác nhận lời giải thích của @Matt Ball, phù thủy tôi nghĩ là đúng, hãy thử đặt tùy chọn sau trong trình hướng dẫn: "Sử dụng các tệp lớp được biên dịch trong không gian làm việc" –

Trả lời

10

Dường như Trình hướng dẫn xuất sản phẩm Eclipse không diễn giải tệp của bạn dưới dạng UTF-8. Có lẽ bạn cần chạy JVM của Eclipse với bộ mã hóa thành UTF-8 (-Dfile.encoding=UTF8 trong eclipse.ini)?

(Copypasta'd theo yêu cầu OPS)

2

Khi xuất khẩu một plug-in, nó được biên dịch thông qua một quá trình riêng biệt từ quá trình xây dựng thông thường trong IDE. Có một known bug rằng quá trình xây dựng (PDE.Build) bỏ qua mã hóa văn bản được sử dụng bởi IDE.

Việc xuất khẩu có thể được thực hiện để hoạt động đúng bằng cách xác định mã hóa văn bản trong tệp build.properties của plugin của bạn

javacDefaultEncoding.. =UTF-8 
Các vấn đề liên quan