Toyomasa Watarai
/
locale_test
UTF-8 to SJIS conversion
This example program converts UTF-8 code to Shift-JIS code.
main.cpp
- Committer:
- MACRUM
- Date:
- 2013-08-24
- Revision:
- 0:1215a9611188
- Child:
- 1:9bd53bc5ff51
File content as of revision 0:1215a9611188:
#include "mbed.h" #include <locale.h> #include <cwchar> #pragma import __use_all_ctype DigitalOut myled(LED1); static char buf_s[1024]; static char buf_u[1024] = {0xE6,0x97,0xA5,0xE6,0x9C,0xAC,0xE8,0xAA,0x9E,0xE6,0x96,0x87,0xE5,0xAD,0x97,0xE5,0x88,0x97,0x5F,0x41,0x42,0x43,0x44,0x5F,0x30,0x31,0x32,0x33,0x00}; static wchar_t wstr[1024]; static int utf8tosjis(const char* utfBuffer, int utfBufLen, char* sjisBuffer, int sjisBufLen) { int i, wi; wchar_t wc; mbstate_t state = {0}; size_t ret; i = wi = 0; while (1) { ret = mbrtowc(&wc, utfBuffer+i, 3, &state); if (ret == (size_t)-2 || ret == (size_t)-1) { printf("\nThere was a problem decoding the multibyte string.\n"); return ret; } else if (ret == 0) { break; /* we hit \0, end of string */ } else { i += ret; wstr[wi++] = wc; } } wstr[wi] = L'\0'; return ret; } int main() { int err = 0; err = utf8tosjis(buf_u, 29, buf_s, sizeof(buf_s)); return 0; }