SimpleDateFormat локализованные названия месяцев

Я искал по всему сайту, но я думаю, что у меня немного другая проблема, и я мог бы действительно сделать с некоторой помощью, прежде чем у меня либо сердечная недостаточность или сжечь компьютер.

Я динамически генерирую список названий месяцев (в форме июнь 2011, июль 2011) и, очевидно, хочу, чтобы он был чувствителен к локали: поэтому я использую простой объект формата даты следующим образом:

//the actual locale name is dependent on UI selection
Locale localeObject=new Locale("pl"); 
// intended to return full month name - in local language.
DateFormat dtFormat = new SimpleDateFormat("MMMM yyyy",localeObject);
//this bit just sets up a calendar (used for other bits but here to illustrate the issue
String systemTimeZoneName = "GMT";
TimeZone systemTimeZone=TimeZone.getTimeZone(systemTimeZoneName);
Calendar mCal = new GregorianCalendar(systemTimeZone); //"gmt" time
mCal.getTime(); //current date and time

но если я сделаю так:

String value=dtFormat.format(mCal.getTime()); 

это "должно" вернуть локализованную версию названия месяца. В польском языке слово "сентябрь" звучит как "Wrzesień" - обратите внимание на ударение на n. Однако все, что я получаю в ответ - это "Wrzesie?"

Что я делаю не так?

Спасибо всем - теперь я понимаю, что это проблема представления - но как я могу "прочитать" результат из dtFormat безопасно - я добавил несколько комментариев ниже об использовании getBytes и т.д. - это работало в других ситуациях, я просто не могу получить доступ к строковому результату, не испортив его

-- FINAL Edit; для всех, кто столкнется с этой проблемой

Ответ был в блоге BalusC: http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right. html#DevelopmentEnvironment

В основном объект DTformat возвращал UTF-8 и автоматически преобразовывался обратно в системный набор символов по умолчанию, когда я считывал его в строку

так что этот код сработал для меня

new String(dtFormat.format(mCal.getTime()).getBytes("UTF-8"),"ISO-8859-1");

большое спасибо за помощь

6
задан Kelly 4 October 2011 в 08:51
поделиться