Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jni Русские символы 
:(
    Опции темы
IUMag
Дата 7.8.2015, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.4.2012

Репутация: нет
Всего: нет



Добрый день, работаю с библиотекой jacob, которая написана с помощью jni. Там есть исходники с++. Как мне можно передать русскую строку. Вот кусок кода:
Код

const char *progid = env->GetStringUTFChars(_progid, 0);
CLSID clsid;
HRESULT hr;
IUnknown *punk = NULL;
IDispatch *pIDispatch;
USES_CONVERSION;
LPOLESTR bsProgId = A2W(progid);
if (strchr(progid,':')) 
{
 env->ReleaseStringUTFChars(_progid, progid);
 // it's a moniker
 hr = CoGetObject(bsProgId, NULL, IID_IUnknown, (LPVOID *)&punk);

Прочитал что функция GetStringUTFChars не работает с русскими символами, как мне быть?
Если я использую эту функцию, то он мне возвращает такую строку WinNT://IUMAG/Администратор,user
PM MAIL   Вверх
LSD
Дата 7.8.2015, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Не знаю, где ты это прочитал, но читай там больше. В документации Oracle ясно сказано:
Цитата
GetStringUTFChars
const char * GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy);

Returns a pointer to an array of bytes representing the string in modified UTF-8 encoding. This array is valid until it is released by ReleaseStringUTFChars().

If isCopy is not NULL, then *isCopy is set to JNI_TRUE if a copy is made; or it is set to JNI_FALSE if no copy is made.

Т.е. ты получишь UTF-8 строку, никаких проблем с поддержкой русских символов в UTF-8 - нет.

Добавлено через 2 минуты и 12 секунд
Цитата(IUMag @  7.8.2015,  13:08 Найти цитируемый пост)
Если я использую эту функцию, то он мне возвращает такую строку WinNT://IUMAG/Администратор,user 

Это строка в UTF-8, в UTF-8 русские символы занимают 2 байта. Я не знаю что ты дальше планируешь делать с этой строкой, но возможно ее надо из UTF-8 преобразовать в Windows-1251.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
IUMag
Дата 7.8.2015, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 2.4.2012

Репутация: нет
Всего: нет



Код

String objUser2 = new String(objUser.getBytes("utf-8"),"cp1251");

Вот пробовал

Добавлено через 12 минут и 22 секунды
Сейчас проверил, у меня символы пропадают тут LPOLESTR bsProgId = A2W(progid);
PM MAIL   Вверх
LSD
Дата 7.8.2015, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(IUMag @  7.8.2015,  14:09 Найти цитируемый пост)
Вот пробовал

НИКОГДА так не делай.



Я еще раз повторю:
Цитата(LSD @  7.8.2015,  13:30 Найти цитируемый пост)
Это строка в UTF-8

которая интерпретируется как ASCII, если ее просмотреть как UTF-8 то будет WinNT://IUMAG/Администратор,user. Из Java все приходит правильно и в Java ничего делать не надо, проблема в C. Что A2W ждет на вход?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1221 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.