Различные результаты от функции утилиты ICONV и ICONV в моем приложенииLinux

Ответить Пред. темаСлед. тема
Anonymous
 Различные результаты от функции утилиты ICONV и ICONV в моем приложении

Сообщение Anonymous »

Я пытаюсь написать приложение C ++, которое необходимо вывести в данные текстовых терминалов, поступает из базы данных LDAP. Данные в этой базе данных могут содержать акцентированные символы, используя кодирование UTF-8 Chracter, но терминалы целевых пользователей могут использовать различные кодировки (такие как ISO8859-1 или CP-1252 или даже ASCII в некоторых случаях), поэтому я подумал об использовании ICONV () для перевода из серии UTF-8, что выбранное для пользователя () variables).
With such a goal, and especially when the terminal uses ASCII, I thought of selecting a target encoding with the "//TRANSLIT" suffix in the call to iconv_open(), to enable the transliteration of characters with diacritical markas, such as ã, ç and é , к их аналогам ASCII без таких знаков (т.е. a , c и e , соответствующая).
До моего попытки реализовать, я проверил с использованием Iconv , чтобы проверить, что мой подход будет работать, и он проверил Terminm. сеанс). < /p>

Код: Выделить всё

$ echo 'café com açúcar'
café com açúcar
$ echo 'café com açúcar' | iconv -f UTF-8 -t ASCII//TRANSLIT
cafe com acucar
$ echo 'café com açúcar' | iconv -f UTF-8 -t WCHAR_T | iconv -f WCHAR_T -t ASCII//TRANSLIT
cafe com acucar
В третьем выше примере, проходящем через промежуточный шаг с использованием wchar_t , было то, о чем я думал для подсчета количества глифов, чтобы помочь мне использовать форматирование и прокладку экрана, даже когда в строке есть символы. Ожидаемые соответствующие буквы ASCII без диаклитики. < /p>
Я попытался повторить проблему в минимально работающем примере (с некоторым кодом отладки) ниже. < /p>

Код: Выделить всё

#include 
#include 
#include 

#include 
#include 
#include 
#include 

#include 

using namespace std;

const char msg[]="café com açúcar";

char local_msg[1000];
wchar_t wc_msg[1000];

// For debugging
void dump_str(const char *s){ cout loc)
local_charset=p+1;
else
local_charset="ASCII//TRANSLIT";

iconv_t u8_local=iconv_open(local_charset, "UTF-8");
iconv_t u8_wc=iconv_open("WCHAR_T", "UTF-8");
iconv_t wc_local=iconv_open(local_charset, "WCHAR_T");

cout  WCHAR_T:
iconv(...)=0; src="café com açúcar"; dst=L"\x63\x61\x66\xe9\x20\x63\x6f\x6d\x20\x61\xe7\xfa\x63\x61\x72"; in_left=0; out_left=3940
WCHAR_T -> ASCII//TRANSLIT:
iconv(...)=3; src=L"\x63\x61\x66\xe9\x20\x63\x6f\x6d\x20\x61\xe7\xfa\x63\x61\x72"; dst="caf? com a??car"; in_left=0; out_left=985
Как я могу получить ожидаемые неадцицентированные (и без седиллы) буквы вместо? Есть ли какие -нибудь шаги, которые мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/797 ... pplication
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Различные результаты от функции утилиты ICONV и ICONV в моем приложении
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Различные результаты от функции утилиты ICONV и ICONV в моем приложении
    Anonymous » » в форуме Linux
    0 Ответы
    119 Просмотры
    Последнее сообщение Anonymous
  • Различные результаты от функции утилиты ICONV и ICONV в моем приложении
    Anonymous » » в форуме Linux
    0 Ответы
    114 Просмотры
    Последнее сообщение Anonymous
  • Iconv или mbstring? [закрыто]
    Anonymous » » в форуме Php
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Glib iconv () - преобразование силы в одиночные байты
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»