>
JNIEXPORT jstring JNICALL Java_Test_nGetErrorString
(JNIEnv * env, jobject obj, jint error)
{
char cmsg [256];
memset (cmsg, 0, sizeof (cmsg));
get_error_string (error, cmsg, sizeof (cmsg));
return newString (env, cmsg);
}
Тут використовується перетворення символів за замовчуванням, що цілком природно при взаємодіях із системним API. Якщо ж Вам необхідна певна кодова сторінка, відповідно потрібно додати її назву. p> GUI (AWT, Swing) p> Багато пов'язують неправильний висновок російських букв з неправильною установкою шрифту. На Насправді в Java все складніше і рідко дійсно пов'язано зі шрифтами. p> Де ж дійсно лежать найбільші підводні камені? В основному це пов'язано з неправильної перекодувала символів. Частина цих проблем і методи їх вирішення описані вище. Якщо у Вас все перетворення виконуються коректно, і для виведення використовується шрифт Unicode, то є дуже великий шанс, що Ваша програма буде працювати правильно. p> Якщо проблеми все ж залишилися, тут потрібно з'ясувати, де вони виникають. Спробуйте запустити додаток під різними JVM, під різними платформами, на різних броузерах. Приклад досить універсального алгоритму пошуку проблем запропонований нижче, в розділі Типові помилки. p> Якщо програма не працює ніде - значить проблема тільки в ній і у Ваших руках. Уважно перечитайте все, що було написано вище, і шукайте. Якщо ж проблема проявляється тільки в конкретному оточенні - значить справа, можливо в налаштуваннях. Де саме - залежить від того, який графічною бібліотекою Ви користуєтеся. Якщо AWT - допомогти може правильна настройка файлу font.properties.ru. Приклад коректного файлу можна взяти з Java 2. Якщо у Вас немає цієї версії, можете завантажити його з даного сайту: версія для Windows, версія для Linux (див. також розділ по Linux нижче). Цей файл задає використовувані шрифти і кодові сторінки. Якщо у Вас встановлена ​​російська версія OS - просто додайте цей файл туди, де лежить файл font.properties. Якщо ж це англицкий версія, то потрібно, або переписати цей файл замість font.properties або додатково змінити поточні регіональні налаштування на російські. Іноді може спрацювати настройка-Duser.language = ru, але частіше - ні. Тут приблизно ті ж проблеми, що і з file.encoding - спрацює чи ні, залежить від JDK (див. помилку за номером 4152725). p> Якщо крім російських букв Вам також треба виводити, наприклад, грецькі, то зазвичай достатньо просто правильно вказати їх коду. Працює все це приблизно таким способом:
За замовчуванням у AWT і Swing використовуються віртуальні шрифти, настроюються в font.properties.ru (dialog, dialoginput і т.д.). Ці шрифти віртуальні і при виведенні, залежно від коду виведеного символу використовується один з реальних шрифтів. Наприклад, ось ці рядки:
dialog.0 = Arial, RUSSIAN_CHARSET
dialog.1 = WingDings, SYMBOL_CHARSET, NEED_CONVERTED
dialog.2 =...