Unicode 将Mac罗马字符转换为等效UTF-8
我收到了一些使用Mac OS Roman文件编码的HTML文件。这些文件有法文文本,但在编辑器中,许多变音字符看起来很奇怪(即非法文)Unicode 将Mac罗马字符转换为等效UTF-8,unicode,utf-8,character-encoding,file-encodings,mac-roman,Unicode,Utf 8,Character Encoding,File Encodings,Mac Roman,我收到了一些使用Mac OS Roman文件编码的HTML文件。这些文件有法文文本,但在编辑器中,许多变音字符看起来很奇怪(即非法文) Si cette option estÈselectionÈe,tentera de communiquer avec votre tÈlescope seulementÈlíaide díun。。。 带重音的大写字母E和其他奇怪字符一样,在浏览器中也能正确显示 我还有一些UTF-8法语文件,在编辑器中看起来很正常(看起来像)。我想做的是将所有Mac Roma
Si cette option estÈselectionÈe,tentera de communiquer avec votre tÈlescope seulementÈlíaide díun。。。
带重音的大写字母E和其他奇怪字符一样,在浏览器中也能正确显示
我还有一些UTF-8法语文件,在编辑器中看起来很正常(看起来像)。我想做的是将所有Mac Roman文件转换为UTF-8,以便于维护
仅仅在编辑器中更改文件编码并不能做到这一点。奇怪的人物仍然很奇怪
除了制作转换字典和对所有文件进行查找/替换之外,还有什么方法可以做到这一点吗?如果您指定编码时编辑器没有正确显示,则说明您给了它错误的编码。你需要弄清楚你真正的编码是什么 您似乎有一个字节值0xE9,其中需要一个带锐字符的Unicode
拉丁小写字母E。MacRoman 0xE9字节是一个拉丁文大写字母E,带有GRAVE
字符,这就是您的编辑器显示的内容,因为您说它是MacRoman。但事实并非如此
然而,Unicode代码点U+00E9确实是带有锐音符的拉丁文小写字母E
因此,这里不是MacRoman,而是ISO-8859-1或ISO-8859-15
所以使用类似
$ iconv -f ISO-8859-1 -t UTF-8 < input.latin1 > output.utf8
$iconv-f ISO-8859-1-t UTF-8output.utf8
进行转换 实际回答问题“将Mac罗马字符转换为等效UTF-8”
将文件编码从Mac OS Roman转换为UTF-8:
$ iconv -f macintosh -t UTF-8 < INPUT_FILE_PATH > OUTPUT_FILE_PATH
$iconv-f macintosh-t UTF-8OUTPUT\u FILE\u PATH
要转换目录树中的许多旧java代码文件,这对我来说很有用。
请注意,该命令将递归地更改从cd插入的所有目录中的文件。确保您位于正确的目录中,并且首先备份了您的文件和计算机。当您知道自己在做什么时,请更正rm语句。希望这能帮助一些人,我花了好几个小时来纠正这些小细节,让它正常工作
cd /tmp
pwd
find . -name "*.java" -exec bash -c 'mv $1 $1.WXY; iconv -f MAC -t UTF8 $1.WXY > $1; rm $1.WXYY' sh {} \;
C++代码:
string ConvertMacRomanCharacterToUtf8( unsigned char c )
{
static vector<string> strings
// switch ( c )
{
/* case 0x80: return */ "\xC3\x84", // A umlaut
/* case 0x81: return */ "\xC3\x85", // A circle
/* case 0x82: return */ "\xC3\x87", // C cedilla
/* case 0x83: return */ "\xC3\x89", // E accent
/* case 0x84: return */ "\xC3\x91", // N tilde
/* case 0x85: return */ "\xC3\x96", // O umlaut
/* case 0x86: return */ "\xC3\x9C", // U umlaut
/* case 0x87: return */ "\xC3\xA1", // a accent
/* case 0x88: return */ "\xC3\xA0", // a grave
/* case 0x89: return */ "\xC3\xA2", // a circumflex
/* case 0x8A: return */ "\xC3\xA4", // a umlaut
/* case 0x8B: return */ "\xC3\xA3", // a tilde
/* case 0x8C: return */ "\xC3\xA5", // a circle
/* case 0x8D: return */ "\xC3\xA7", // c cedilla
/* case 0x8E: return */ "\xC3\xA9", // e accent
/* case 0x8F: return */ "\xC3\xA8", // e grave
/* case 0x90: return */ "\xC3\xAA", // e circumflex
/* case 0x91: return */ "\xC3\xAB", // e umlaut
/* case 0x92: return */ "\xC3\xAD", // i accent
/* case 0x93: return */ "\xC3\xAC", // i grave
/* case 0x94: return */ "\xC3\xAE", // i circumflex
/* case 0x95: return */ "\xC3\xAF", // i umlaut
/* case 0x96: return */ "\xC3\xB1", // n tilde
/* case 0x97: return */ "\xC3\xB3", // o accent
/* case 0x98: return */ "\xC3\xB2", // o grave
/* case 0x99: return */ "\xC3\xB4", // o circumflex
/* case 0x9A: return */ "\xC3\xB6", // o umlaut
/* case 0x9B: return */ "\xC3\xB5", // o tilde
/* case 0x9C: return */ "\xC3\xBA", // u accent
/* case 0x9D: return */ "\xC3\xB9", // u grave
/* case 0x9E: return */ "\xC3\xBB", // u circumflex
/* case 0x9F: return */ "\xC3\xBC", // u tilde
/* case 0xA0: return */ "\xE2\x80\xA0", // cross
/* case 0xA1: return */ "\xC2\xB0", // degree
/* case 0xA2: return */ "\xC2\xA2", // cents
/* case 0xA3: return */ "\xC2\xA3", // pounds
/* case 0xA4: return */ "\xC2\xA7", // section
/* case 0xA5: return */ "\xE2\x80\xA2", // bullet
/* case 0xA6: return */ "\xC2\xB6", // pilcrow
/* case 0xA7: return */ "\xC3\x9F", // german sharp S
/* case 0xA8: return */ "\xC2\xAE", // registered
/* case 0xA9: return */ "\xC2\xA9", // copyright
/* case 0xAA: return */ "\xE2\x84\xA2", // TM
/* case 0xAB: return */ "\xC2\xB4", // back tick
/* case 0xAC: return */ "\xC2\xA8", // umlaut
/* case 0xAD: return */ "\xE2\x89\xA0", // not equal (not in Windows 1252)
/* case 0xAE: return */ "\xC3\x86", // AE
/* case 0xAF: return */ "\xC3\x98", // O slash
/* case 0xB0: return */ "\xE2\x88\x9E", // infinity (not in Windows 1252)
/* case 0xB1: return */ "\xC2\xB1", // plus or minus
/* case 0xB2: return */ "\xE2\x89\xA4", // less than or equal (not in Windows 1252)
/* case 0xB3: return */ "\xE2\x89\xA5", // greater than or equal (not in Windows 1252)
/* case 0xB4: return */ "\xC2\xA5", // yen
/* case 0xB5: return */ "\xC2\xB5", // mu
/* case 0xB6: return */ "\xE2\x88\x82", // derivative (not in Windows 1252)
/* case 0xB7: return */ "\xE2\x88\x91", // large sigma (not in Windows 1252)
/* case 0xB8: return */ "\xE2\x88\x8F", // large pi (not in Windows 1252)
/* case 0xB9: return */ "\xCF\x80", // small pi (not in Windows 1252)
/* case 0xBA: return */ "\xE2\x88\xAB", // integral (not in Windows 1252)
/* case 0xBB: return */ "\xC2\xAA", // feminine ordinal
/* case 0xBC: return */ "\xC2\xBA", // masculine ordinal
/* case 0xBD: return */ "\xCE\xA9", // large ohm (not in Windows 1252)
/* case 0xBE: return */ "\xC3\xA6", // ae
/* case 0xBF: return */ "\xC3\xB8", // o slash
/* case 0xC0: return */ "\xC2\xBF", // inverted question mark
/* case 0xC1: return */ "\xC2\xA1", // inverted exclamation mark
/* case 0xC2: return */ "\xC2\xAC", // not
/* case 0xC3: return */ "\xE2\x88\x9A", // root (not in Windows 1252)
/* case 0xC4: return */ "\xC6\x92", // function
/* case 0xC5: return */ "\xE2\x89\x88", // approximately equal (not in Windows 1252)
/* case 0xC6: return */ "\xE2\x88\x86", // large delta (not in Windows 1252)
/* case 0xC7: return */ "\xC2\xAB", // open angle quotation mark
/* case 0xC8: return */ "\xC2\xBB", // close angle quotation mark
/* case 0xC9: return */ "\xE2\x80\xA6", // ellipsis
/* case 0xCA: return */ "\xC2\xA0", // NBSP
/* case 0xCB: return */ "\xC3\x80", // A grave
/* case 0xCC: return */ "\xC3\x83", // A tilde
/* case 0xCD: return */ "\xC3\x95", // O tilde
/* case 0xCE: return */ "\xC5\x92", // OE
/* case 0xCF: return */ "\xC5\x93", // oe
/* case 0xD0: return */ "\xE2\x80\x93", // en dash
/* case 0xD1: return */ "\xE2\x80\x94", // em dash
/* case 0xD2: return */ "\xE2\x80\x9C", // open smart double quote
/* case 0xD3: return */ "\xE2\x80\x9D", // close smart double quote
/* case 0xD4: return */ "\xE2\x80\x98", // open smart single quote
/* case 0xD5: return */ "\xE2\x80\x99", // close smart single quote
/* case 0xD6: return */ "\xC3\xB7", // divided
/* case 0xD7: return */ "\xE2\x97\x8A", // diamond (not in Windows 1252)
/* case 0xD8: return */ "\xC3\xBF", // y umlaut
/* case 0xD9: return */ "\xC5\xB8", // Y umlaut
/* case 0xDA: return */ "\xE2\x81\x84", // big slash (not in Windows 1252)
/* case 0xDB: return */ "\xE2\x82\xAC", // euro (not in Windows 1252)
/* case 0xDC: return */ "\xE2\x80\xB9", // open angle single quote
/* case 0xDD: return */ "\xE2\x80\xBA", // close angle single quote
/* case 0xDE: return */ "\xEF\xAC\x81", // fi ligature (not in Windows 1252)
/* case 0xDF: return */ "\xEF\xAC\x82", // fl ligature (not in Windows 1252)
/* case 0xE0: return */ "\xE2\x80\xA1", // double dagger
/* case 0xE1: return */ "\xC2\xB7", // interpunct
/* case 0xE2: return */ "\xE2\x80\x9A", // inverted smart single quote
/* case 0xE3: return */ "\xE2\x80\x9E", // inverted smart double quote
/* case 0xE4: return */ "\xE2\x80\xB0", // per mille
/* case 0xE5: return */ "\xC3\x82", // A circumflex
/* case 0xE6: return */ "\xC3\x8A", // E circumflex
/* case 0xE7: return */ "\xC3\x81", // A accent
/* case 0xE8: return */ "\xC3\x8B", // E umlaut
/* case 0xE9: return */ "\xC3\x88", // E grave
/* case 0xEA: return */ "\xC3\x8D", // I accent
/* case 0xEB: return */ "\xC3\x8E", // I circumflex
/* case 0xEC: return */ "\xC3\x8F", // I umlaut
/* case 0xED: return */ "\xC3\x8C", // I grave
/* case 0xEE: return */ "\xC3\x93", // O accent
/* case 0xEF: return */ "\xC3\x94", // O circumflex
/* case 0xF0: return */ "\xEF\xA3\xBF", // box (not in Windows 1252)
/* case 0xF1: return */ "\xC3\x92", // O grave
/* case 0xF2: return */ "\xC3\x9A", // U accent
/* case 0xF3: return */ "\xC3\x9B", // U circumflex
/* case 0xF4: return */ "\xC3\x99", // U grave
/* case 0xF5: return */ "\xC4\xB1", // dotless i ligature (not in Windows 1252)
/* case 0xF6: return */ "\xCB\x86", // circumflex
/* case 0xF7: return */ "\xCB\x9C", // tilde
/* case 0xF8: return */ "\xC2\xAF", // macron
/* case 0xF9: return */ "\xCB\x98", // breve (not in Windows 1252)
/* case 0xFA: return */ "\xCB\x99", // raised dot (not in Windows 1252)
/* case 0xFB: return */ "\xCB\x9A", // ring
/* case 0xFC: return */ "\xC2\xB8", // cedilla
/* case 0xFD: return */ "\xCB\x9D", // double acute accent (not in Windows 1252)
/* case 0xFE: return */ "\xCB\x9B", // ogonek (not in Windows 1252)
/* case 0xFF: return */ "\xCB\x87", // caron (not in Windows 1252)
};
if ( c >= 0x80 )
{
return strings[ c - 0x80 ];
}
return string( 1, c );
}
字符串转换器MacromanCharacterToutf8(无符号字符c)
{
静态向量字符串
//开关(c)
{
/*案例0x80:返回*/“\xC3\x84”,//一个umlaut
/*案例0x81:返回*/“\xC3\x85”,//一个圆
/*案例0x82:返回*/“\xC3\x87”,//C cedilla
/*案例0x83:返回*/“\xC3\x89”,//E重音
/*案例0x84:返回*/“\xC3\x91”,//N波浪形
/*案例0x85:返回*/“\xC3\x96”//O umlaut
/*案例0x86:返回*/“\xC3\x9C”,//U umlaut
/*案例0x87:返回*/“\xC3\xA1”,//重音
/*案例0x88:return*/“\xC3\xA0”//一个坟墓
/*案例0x89:返回*/“\xC3\xA2”,//一个扬抑符
/*案例0x8A:返回*/“\xC3\xA4”//a umlaut
/*案例0x8B:返回*/“\xC3\xA3”,//一个波浪形
/*案例0x8C:返回*/“\xC3\xA5”,//一个圆
/*案例0x8D:return*/“\xC3\xA7”,//c cedilla
/*案例0x8E:return*/“\xC3\xA9”,//e重音
/*案例0x8F:return*/“\xC3\xA8”,//e grave
/*案例0x90:return*/“\xC3\xAA”//e扬抑符
/*案例0x91:返回*/“\xC3\xAB”,//e umlaut
/*案例0x92:返回*/“\xC3\xAD”,//i重音
/*案例0x93:return*/“\xC3\xAC”//i grave
/*案例0x94:return*/“\xC3\xAE”//i扬抑符
/*案例0x95:返回*/“\xC3\xAF”,//i umlaut
/*案例0x96:返回*/“\xC3\xB1”//n波浪形
/*案例0x97:返回*/“\xC3\xB3”,//o重音
/*案例0x98:return*/“\xC3\xB2”//o grave
/*案例0x99:返回*/“\xC3\xB4”,//o扬抑符
/*案例0x9A:返回*/“\xC3\xB6”//o umlaut
/*案例0x9B:返回*/“\xC3\xB5”,//o tilde
/*案例0x9C:return*/“\xC3\xBA”,//u重音
/*案例0x9D:return*/“\xC3\xB9”,//u grave
/*案例0x9E:返回*/“\xC3\xBB”,//u扬抑符
/*案例0x9F:返回*/“\xC3\xBC”,//u波浪形
/*案例0xA0:return*/“\xE2\x80\xA0”,//交叉
/*案例0xA1:返回*/“\xC2\xB0”,//度
/*案例0xA2:返回*/“\xC2\xA2”,//分
/*案例0xA3:返回*/“\xC2\xA3”,//磅
/*案例0xA4:返回*/“\xC2\xA7”,//节
/*案例0xA5:返回*/“\xE2\x80\xA2”,//项目符号
/*案例0xA6:return*/“\xC2\xB6”,//pilcrow
/*案例0xA7:返回*/“\xC3\x9F”,//德语夏普S
/*案例0xA8:返回*/“\xC2\xAE”,//已注册
/*案例0xA9:return*/“\xC2\xA9”,//版权所有
/*案例0xAA:return*/“\xE2\x84\xA2”,//TM
/*案例0xAB:返回*/“\xC2\xB4”,//返回勾号
/*案例0xAC:return*/“\xC2\xA8”,//umlaut
/*案例0xAD:return*/“\xE2\x89\xA0”,//不相等(不在Windows 1252中)
/*案例0xAE:返回*/“\xC3\x86”,//AE
/*案例0xAF:返回*/“\xC3\x98”,//O斜杠
/*案例0xB0:return*/“\xE2\x88\x9E”,//无穷大(不在Windows 1252中)
/*案例0xB1:返回*/“\xC2\xB1”,//加号或减号
/*案例0xB2:返回*/“\xE2\x89\xA4”,//小于或等于(不在Windows 1252中)
/*案例0xB3:返回*/“\xE2\x89\xA5”,//大于或等于(不在Windows 1252中)
/*案例0xB4:返回*/“\xC2\xA5”,//日元
/*案例0xB5:返回*/“\xC2\xB5”,//mu
/*案例0xB6:return*/“\xE2\x88\x82”,//派生(不在Windows 1252中)
/*案例0xB7:return*/“\xE2\x88\x91”,//大西格玛(不在Windows 1252中)
/*案例0xB8:return*/“\xE2\x88\x8F”,//大pi(不在Windows 1252中)
/*案例0xB9:返回*/
string ConvertMacRomanCharacterToUtf8( unsigned char c )
{
static vector<string> strings
// switch ( c )
{
/* case 0x80: return */ "\xC3\x84", // A umlaut
/* case 0x81: return */ "\xC3\x85", // A circle
/* case 0x82: return */ "\xC3\x87", // C cedilla
/* case 0x83: return */ "\xC3\x89", // E accent
/* case 0x84: return */ "\xC3\x91", // N tilde
/* case 0x85: return */ "\xC3\x96", // O umlaut
/* case 0x86: return */ "\xC3\x9C", // U umlaut
/* case 0x87: return */ "\xC3\xA1", // a accent
/* case 0x88: return */ "\xC3\xA0", // a grave
/* case 0x89: return */ "\xC3\xA2", // a circumflex
/* case 0x8A: return */ "\xC3\xA4", // a umlaut
/* case 0x8B: return */ "\xC3\xA3", // a tilde
/* case 0x8C: return */ "\xC3\xA5", // a circle
/* case 0x8D: return */ "\xC3\xA7", // c cedilla
/* case 0x8E: return */ "\xC3\xA9", // e accent
/* case 0x8F: return */ "\xC3\xA8", // e grave
/* case 0x90: return */ "\xC3\xAA", // e circumflex
/* case 0x91: return */ "\xC3\xAB", // e umlaut
/* case 0x92: return */ "\xC3\xAD", // i accent
/* case 0x93: return */ "\xC3\xAC", // i grave
/* case 0x94: return */ "\xC3\xAE", // i circumflex
/* case 0x95: return */ "\xC3\xAF", // i umlaut
/* case 0x96: return */ "\xC3\xB1", // n tilde
/* case 0x97: return */ "\xC3\xB3", // o accent
/* case 0x98: return */ "\xC3\xB2", // o grave
/* case 0x99: return */ "\xC3\xB4", // o circumflex
/* case 0x9A: return */ "\xC3\xB6", // o umlaut
/* case 0x9B: return */ "\xC3\xB5", // o tilde
/* case 0x9C: return */ "\xC3\xBA", // u accent
/* case 0x9D: return */ "\xC3\xB9", // u grave
/* case 0x9E: return */ "\xC3\xBB", // u circumflex
/* case 0x9F: return */ "\xC3\xBC", // u tilde
/* case 0xA0: return */ "\xE2\x80\xA0", // cross
/* case 0xA1: return */ "\xC2\xB0", // degree
/* case 0xA2: return */ "\xC2\xA2", // cents
/* case 0xA3: return */ "\xC2\xA3", // pounds
/* case 0xA4: return */ "\xC2\xA7", // section
/* case 0xA5: return */ "\xE2\x80\xA2", // bullet
/* case 0xA6: return */ "\xC2\xB6", // pilcrow
/* case 0xA7: return */ "\xC3\x9F", // german sharp S
/* case 0xA8: return */ "\xC2\xAE", // registered
/* case 0xA9: return */ "\xC2\xA9", // copyright
/* case 0xAA: return */ "\xE2\x84\xA2", // TM
/* case 0xAB: return */ "\xC2\xB4", // back tick
/* case 0xAC: return */ "\xC2\xA8", // umlaut
/* case 0xAD: return */ "\xE2\x89\xA0", // not equal (not in Windows 1252)
/* case 0xAE: return */ "\xC3\x86", // AE
/* case 0xAF: return */ "\xC3\x98", // O slash
/* case 0xB0: return */ "\xE2\x88\x9E", // infinity (not in Windows 1252)
/* case 0xB1: return */ "\xC2\xB1", // plus or minus
/* case 0xB2: return */ "\xE2\x89\xA4", // less than or equal (not in Windows 1252)
/* case 0xB3: return */ "\xE2\x89\xA5", // greater than or equal (not in Windows 1252)
/* case 0xB4: return */ "\xC2\xA5", // yen
/* case 0xB5: return */ "\xC2\xB5", // mu
/* case 0xB6: return */ "\xE2\x88\x82", // derivative (not in Windows 1252)
/* case 0xB7: return */ "\xE2\x88\x91", // large sigma (not in Windows 1252)
/* case 0xB8: return */ "\xE2\x88\x8F", // large pi (not in Windows 1252)
/* case 0xB9: return */ "\xCF\x80", // small pi (not in Windows 1252)
/* case 0xBA: return */ "\xE2\x88\xAB", // integral (not in Windows 1252)
/* case 0xBB: return */ "\xC2\xAA", // feminine ordinal
/* case 0xBC: return */ "\xC2\xBA", // masculine ordinal
/* case 0xBD: return */ "\xCE\xA9", // large ohm (not in Windows 1252)
/* case 0xBE: return */ "\xC3\xA6", // ae
/* case 0xBF: return */ "\xC3\xB8", // o slash
/* case 0xC0: return */ "\xC2\xBF", // inverted question mark
/* case 0xC1: return */ "\xC2\xA1", // inverted exclamation mark
/* case 0xC2: return */ "\xC2\xAC", // not
/* case 0xC3: return */ "\xE2\x88\x9A", // root (not in Windows 1252)
/* case 0xC4: return */ "\xC6\x92", // function
/* case 0xC5: return */ "\xE2\x89\x88", // approximately equal (not in Windows 1252)
/* case 0xC6: return */ "\xE2\x88\x86", // large delta (not in Windows 1252)
/* case 0xC7: return */ "\xC2\xAB", // open angle quotation mark
/* case 0xC8: return */ "\xC2\xBB", // close angle quotation mark
/* case 0xC9: return */ "\xE2\x80\xA6", // ellipsis
/* case 0xCA: return */ "\xC2\xA0", // NBSP
/* case 0xCB: return */ "\xC3\x80", // A grave
/* case 0xCC: return */ "\xC3\x83", // A tilde
/* case 0xCD: return */ "\xC3\x95", // O tilde
/* case 0xCE: return */ "\xC5\x92", // OE
/* case 0xCF: return */ "\xC5\x93", // oe
/* case 0xD0: return */ "\xE2\x80\x93", // en dash
/* case 0xD1: return */ "\xE2\x80\x94", // em dash
/* case 0xD2: return */ "\xE2\x80\x9C", // open smart double quote
/* case 0xD3: return */ "\xE2\x80\x9D", // close smart double quote
/* case 0xD4: return */ "\xE2\x80\x98", // open smart single quote
/* case 0xD5: return */ "\xE2\x80\x99", // close smart single quote
/* case 0xD6: return */ "\xC3\xB7", // divided
/* case 0xD7: return */ "\xE2\x97\x8A", // diamond (not in Windows 1252)
/* case 0xD8: return */ "\xC3\xBF", // y umlaut
/* case 0xD9: return */ "\xC5\xB8", // Y umlaut
/* case 0xDA: return */ "\xE2\x81\x84", // big slash (not in Windows 1252)
/* case 0xDB: return */ "\xE2\x82\xAC", // euro (not in Windows 1252)
/* case 0xDC: return */ "\xE2\x80\xB9", // open angle single quote
/* case 0xDD: return */ "\xE2\x80\xBA", // close angle single quote
/* case 0xDE: return */ "\xEF\xAC\x81", // fi ligature (not in Windows 1252)
/* case 0xDF: return */ "\xEF\xAC\x82", // fl ligature (not in Windows 1252)
/* case 0xE0: return */ "\xE2\x80\xA1", // double dagger
/* case 0xE1: return */ "\xC2\xB7", // interpunct
/* case 0xE2: return */ "\xE2\x80\x9A", // inverted smart single quote
/* case 0xE3: return */ "\xE2\x80\x9E", // inverted smart double quote
/* case 0xE4: return */ "\xE2\x80\xB0", // per mille
/* case 0xE5: return */ "\xC3\x82", // A circumflex
/* case 0xE6: return */ "\xC3\x8A", // E circumflex
/* case 0xE7: return */ "\xC3\x81", // A accent
/* case 0xE8: return */ "\xC3\x8B", // E umlaut
/* case 0xE9: return */ "\xC3\x88", // E grave
/* case 0xEA: return */ "\xC3\x8D", // I accent
/* case 0xEB: return */ "\xC3\x8E", // I circumflex
/* case 0xEC: return */ "\xC3\x8F", // I umlaut
/* case 0xED: return */ "\xC3\x8C", // I grave
/* case 0xEE: return */ "\xC3\x93", // O accent
/* case 0xEF: return */ "\xC3\x94", // O circumflex
/* case 0xF0: return */ "\xEF\xA3\xBF", // box (not in Windows 1252)
/* case 0xF1: return */ "\xC3\x92", // O grave
/* case 0xF2: return */ "\xC3\x9A", // U accent
/* case 0xF3: return */ "\xC3\x9B", // U circumflex
/* case 0xF4: return */ "\xC3\x99", // U grave
/* case 0xF5: return */ "\xC4\xB1", // dotless i ligature (not in Windows 1252)
/* case 0xF6: return */ "\xCB\x86", // circumflex
/* case 0xF7: return */ "\xCB\x9C", // tilde
/* case 0xF8: return */ "\xC2\xAF", // macron
/* case 0xF9: return */ "\xCB\x98", // breve (not in Windows 1252)
/* case 0xFA: return */ "\xCB\x99", // raised dot (not in Windows 1252)
/* case 0xFB: return */ "\xCB\x9A", // ring
/* case 0xFC: return */ "\xC2\xB8", // cedilla
/* case 0xFD: return */ "\xCB\x9D", // double acute accent (not in Windows 1252)
/* case 0xFE: return */ "\xCB\x9B", // ogonek (not in Windows 1252)
/* case 0xFF: return */ "\xCB\x87", // caron (not in Windows 1252)
};
if ( c >= 0x80 )
{
return strings[ c - 0x80 ];
}
return string( 1, c );
}