UTF-16字符串所以我有標準的C字符串:從創建的char *
char* name = "Jakub";
我想將它轉換爲UTF-16。我想通了,那UTF-16會是的兩倍長 - 一個字符需要兩個字符。
所以我創建另一個字符串:
char name_utf_16[10]; //"Jakub" is 5 characters
現在,我相信與ASCII字符我只會用低字節,所以對於所有的人就會像74 00
爲J
等。抱着這個信念,我可以讓這樣的代碼:
void charToUtf16(char* input, char* output, int length) {
/*Todo: how to check if output is long enough?*/
for(int i=0; i<length; i+=2) //Step over 2 bytes
{
//Lets use little-endian - smallest bytes first
output[i] = input[i];
output[i+1] = 0; //We will never have any data for this field
}
}
但是,在這個過程中,我與"Jkb"
結束。我知道沒有辦法正確測試 - 我剛剛發送了字符串到Minecraft Bukkit Server。而這也正是它在斷開說:
13時34分19秒] [INFO斷開JKB? [/127.0.0.1:53215]:過時的服務器!
注意:我知道Minecraft使用big-endian。上面的代碼僅僅是一個例子,實際上,我在課堂上實現了我的轉換。
您應該使用現有的UTF-16編碼器,創建一個強大的編碼器並非易事。 – Esailija 2013-03-16 12:57:17
如果我希望能夠使用整個字符表,那不是真的。但我只想在256個ASCII字符中!這個任務也很複雜嗎? – 2013-03-16 13:00:52
顯然是的:P – Esailija 2013-03-16 13:04:33