2010-10-08 50 views
12

Ngày tốt, trong cơ sở dữ liệu có bảng chứa nhà để bán hồ sơ. Đối với mỗi bản ghi nhà có trường tiền tệ (theo định dạng ISO 4217). Có thể nào đó bằng cách nào đó lấy biểu tượng tiền tệ từ mã đó để tôi có thể sử dụng nó trên mặt trình bày?Mã đơn vị tiền tệ để lập bản đồ ký hiệu tiền tệ

Cảm ơn bạn.

P.S. Đã cố gắng để giải quyết vấn đề đó thiết lập đối tượng tiền tệ (tạo ra bởi Currency.getInstance (currencyCode)) vào DecimalNumberFormat setCurrency phương pháp và sau đó định dạng giá trị tôi cần thiết để hiển thị, nhưng định dạng giá trị vẫn không có ký hiệu tiền tệ.

Trả lời

7

Bạn có thể sử dụng phương thức của đối tượng getSymbol.

biểu tượng nào được sử dụng phụ thuộc vào Locale được sử dụng Xem thisthis.

Update, tháng 1 năm 2016: Các liên kết với doanh nghiệp đã chết. Nhưng chúng đặc trưng cho Java 1.4/5 nên không thực sự liên quan nữa. Thông tin chi tiết về định dạng tiền tệ có thể được tìm thấy trong https://docs.oracle.com/javase/tutorial/i18n/format/numberFormat.html. Các liên kết có thể được tìm thấy trên WayBackEngine.

+0

tôi đã cố gắng để sử dụng getSymbol cho USD thì trả lại là ký hiệu đô la (đúng) nhưng nếu tôi sử dụng EUR hoặc DKK làm mã tiền tệ thì kết quả là EUR hoặc DKK http: // ideone.com/ehmlP – artjomka

+0

Biểu tượng nào được sử dụng tùy thuộc vào Ngôn ngữ được sử dụng. Xem bài viết trong câu trả lời của tôi (cập nhật) – Nivas

+0

Như tôi đã hiểu nếu tôi muốn hiển thị biểu tượng tiền tệ thích hợp, tôi cần phải giữ Locale để định dạng giá trị theo loại tôi cần phải đúng (Ví dụ: ánh xạ ví dụ trên Locale.UK)? – artjomka

2

Bạn có thể sử dụng lớp Đơn vị tiền tệ và lớp DecimalFormat để đạt được yêu cầu của mình. Trong ví dụ sau, # đại diện cho số và ¤ biểu thị ký hiệu tiền tệ, bạn có thể tìm các tham số định dạng có liên quan trong tài liệu java API cho lớp DecimalFormat.

 Currency currency = Currency.getInstance("USD"); 

     DecimalFormat decimalFormat = new DecimalFormat("#¤"); 
     decimalFormat.setCurrency(currency); 
     System.out.println(decimalFormat.format(234)); 
+0

Như Nivas đã nói, bạn có thể trực tiếp nhận được biểu tượng có liên quan bằng cách sử dụng phương thức getSymbol() của lớp Currency và có thể chắp thêm nó vào số đó một cách riêng biệt. –

11

@artjomka

tôi đã có thể tái tạo vấn đề của bạn bằng cách thiết lập miền địa phương mặc định của tôi để Latvia

Locale.setDefault(new Locale("lv","LV")); 
Currency c = Currency.getInstance("EUR"); 
System.out.println(c.getSymbol()); 

này đã cho tôi kết quả của "EUR".

Tuy nhiên bằng cách đặt ngôn ngữ của tôi thành Vương quốc Anh (đã là mặc định của tôi), tôi sẽ nhận được biểu tượng cho đồng Euro.

Locale.setDefault(Locale.UK); 
Currency c = Currency.getInstance("EUR"); 
System.out.println(c.getSymbol()); 
+2

Nivas đã chỉnh sửa câu trả lời của mình trong khi tôi viết câu trả lời của tôi. Bài viết liên kết của anh ấy sẽ thấy bạn đúng. –

1

Bạn nên gọi Currency.getSymbol(Locale) thay vì Currency.getSymbol() (không có đối tượng ngôn ngữ). Đặt ngôn ngữ mặc định sẽ cung cấp cho bạn hành vi mà bạn muốn.

0

Không bao giờ bỏ qua một cách mù quáng biểu tượng tiền tệ (giả sử rằng phụ thêm là vị trí thích hợp vị trí của ký hiệu tiền tệ). I18n-thực hành không an toàn. Cùng với "# ¤" chuỗi (đối với miền địa phương với ký hiệu tiền tệ tiền tố, điều này là không chính xác)

0

Có một mã số câu liên quan trong https://stackoverflow.com/a/15343675/702345

Nhưng hãy cẩn thận:

  • Một ngoại tệ có thể có nhiều biểu tượng. Ví dụ: USD cũng có Symbol "Mỹ $" cho địa phương "es_US" (ít nhất là trên Java8, Win7 trên máy ảo của tôi)
  • Đơn vị tiền tệ khác biệt có thể có những biểu tượng giống nhau, ví dụ như: USD, AUD
Các vấn đề liên quan