Linux에서 iconv()로 UTF-16LE를 UTF-8로 변환하려고합니다.iconv()로 UTF-16LE를 UTF-8로 변환
와 내가 그것을 할 생각 ..
하지만 난 내 코드 몇 가지 문제가 ..있어 ..
와 나는 생각이 코드는 동일하지만, 첫 번째가 작동하지 않습니다. 두 번째 작품 만.
#include "stdio.h"
#include "string.h"
#include "iconv.h"
#include "errno.h"
#if 1
int fn2Utf8(char inBuf[], char outBuf[]) {
size_t readBytes = sizeof(inBuf);
size_t writeBytes = sizeof(outBuf);
char* in = inBuf;
char* out = outBuf;
iconv_t convert = iconv_open("UTF-8","UTF-16LE");
if (iconv(convert, &in, &readBytes, &out, &writeBytes) < 0) {
return (-1);
}
iconv_close(convert);
printf("[%s] [%s]\n", inBuf, outBuf);
return (out - outBuf);
}
int main() {
char inBuf[128] ="\x5c\x00\xbd\xac\x01\xc6\x00\xd3\x5c\x00\x00\xb3\x78\xc6\x44\xbe\x5c\x00\x2a\x00\x00\x00";
char outBuf[128];
fn2Utf8(inBuf, outBuf);
return 0;
}
#else
int main() {
char inBuf[128] = "\x5c\x00\xbd\xac\x01\xc6\x00\xd3\x5c\x00\x00\xb3\x78\xc6\x44\xbe\x5c\x00\x2a\x00\x00\x00";
char outBuf[128];
size_t readBytes = sizeof(inBuf);
size_t writeBytes = sizeof(outBuf);
char* in = inBuf;
char* out = outBuf;
iconv_t convert = iconv_open("UTF-8","UTF-16LE");
if (iconv(convert, &in, &readBytes, &out, &writeBytes) < 0) {
return (-1);
}
iconv_close(convert);
printf("[%s] [%s]\n", inBuf, outBuf);
return 0;
}
#endif
당신은 경우 0으로 코드의 두 가지 유형을 complie 수 있습니다 ->의 경우 1
와 나는 한 방법 경우에 필요합니다. 자신의 첫 번째 요소에 대한 포인터에
size_t readBytes = sizeof(inBuf);
size_t writeBytes = sizeof(outBuf);
당신이 함수에 배열을 전달
, 그들은 붕괴 :
"작동하지 않습니다"라는 말은 문제에 대한 설명이 아닙니다. *** 어떻게 *** 작동하지 않습니다? 그것은 구축되지 않습니까? 달리면 충돌이 발생합니까? 예기치 않은 결과가 있습니까? 정교하게하십시오! 그리고 [좋은 질문을하는 법을 읽어보십시오] (http://stackoverflow.com/help/how-to-ask)에 시간을 할애하십시오. –
@Someprogrammerdude 문제는 예기치 않은 결과입니다. 그리고 나는 그것을 읽으려고 노력한다. 덕분에 – hybang