Как преобразовать массив символов Unicode обратно в последовательность Unicode в C ++ - PullRequest
0 голосов
/ 01 января 2011

Моя проблема заключается в том, как преобразовать массив строк / символов c / c ++ в другую строку, содержащую escape-последовательность в кодировке Unicode (UTF-16) из исходной единицы

например, я хочу найти функцию F (char * ch), которая может выполнять следующую функцию.

char a[10] = "\u5f53";
printf("a = %s\n",a);
char b[10];
b = F(a);   //<- F is the function I wanted
printf("b = %s\n",b);

-------- console will show -------
a = 張
b = \u5f53

У кого-нибудь есть идея @@? ~

спасибо !!

ps: я пытался угадать, \ u5f35 означает хранилище значений в a, но это не совсем так значение a [0] = -79, a [1] = 105 ... Так что я не знаю, как преобразовать его обратно в последовательность Unicode .... Пожалуйста, дайте мне хейн ~:)

Ответы [ 2 ]

3 голосов
/ 01 января 2011

Вот пример, который использует библиотеку iconv.

#include <stdio.h>
#include <string.h>
#include <iconv.h>

void F(char *a, char *b, size_t bufsize) {
  size_t in_len = strlen(a);
  size_t out_len = bufsize - 1;
  iconv_t cd = iconv_open("C99", "UTF-8");
  iconv(cd, &a, &in_len, &b, &out_len);
  *b = 0;
}

int main(void) {
  char a[10] = "\u5f53";
  printf("a = %s\n",a);
  char b[10];
  F(a, b, 10);   //<- F is the function I wanted
  printf("b = %s\n",b);
  return 0;
}
0 голосов
/ 01 января 2011

Посмотрите на _mbstowcs_s_l

Я не уверен, как именно нужно указать точку Unicode для функции ... возможно, как у вас ("\ uxxxx")или, может быть, "& # xxxx"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...