2007年9月 8日

Unicode の文字列をソースコードに埋め込む方法


Unicode  UTF-8 \uXXXX 
 

\uXXXX 


Java, JavaScript, Python, C++, C (C99)  \uXXXX  (universal character names) Unicode  "\u3042\u3044\u3046" 

\uXXXX 

gcc/g++  -fexec-charset 使 UTF-8  -fexec-charset=shift_jis \uXXXX  Shift_JIS 

 \u9AD0 ()  Shift_JIS 
% cat u.cc
const char hashigo_taka[] = "\u9AD0";
% g++ -fexec-charset=shift_jis -c u.cc
u.cc:1: error: converting UCN to execution character set: Invalid or incomplete multibyte or wide character

Python Unicode  u'\u3042\u3044\u3046' uUnicode  LANG  LC_ALL 
>>> print u'\u3042'
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode character u'\u3042' in position 0: ordinal not in range(128)

 encode() 使OK
>>> print u'\u3042'.encode('utf-8')
あ

JavaScript document.write("\u3042\u0062\u0063") 

Java  \uXXXX 2
int a = 0;
// \u000a a = 2;
System.out.println(a); 

 Windows 
// c:\unittest

 \uXXXX 16  U+2000B (&#131083)  "\uD840\uDC0B" 

\xXX 


\uXXXX \uXXXX  Unicode  \xXX 使 UTF-8  "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86" 

C/C++ \xXX  0-9, A-F, a-f \xXX 使
% cat x.cc
const char ab [] ="\x61b\n";
% g++ -c x.cc
x.cc:1: error: hex escape sequence out of range

\UXXXXXXXX 


\UXXXXXXXX 32 Unicode 使

\XXX 


8使使


Unicode 16Unicode  JavaScript