2010-02-12 110 views
0

我正在使用OpenGL,並且需要傳遞給字節的函數數組。將Unicode字符串轉換爲字節數組

glCallLists(len('text'), GL_UNSIGNED_BYTES, 'text'); 

這種方式工作正常。但我需要傳遞unicode文本。我認爲它應該像這樣工作:

text = u'unicode text' 
glCallLists(len(text), GL_UNSIGNED_SHORT, convert_to_array_of_words(text)); 

這裏我用GL_UNSIGNED_SHORT,說我給數組,其中每個元素佔用2個字節,並以某種方式Unicode文本轉換爲詞的數組。

那麼,我怎樣才能將unicode字符串轉換爲字符數字的「原始」數組?

+0

我不認爲任何轉換將是必要的。 Unicode文本應該已經是一個無符號短褲數組 – 2010-02-12 05:17:16

+0

@John:取決於庫的內置是使用UCS-2還是UCS-4。 – 2010-02-12 05:28:30

+0

是的,可能是,但當我試圖傳遞unicode字符串時出現這個錯誤:'ctypes.ArgumentError:argument 3::沒有數組類型的處理程序類型(value: u'\ u0439')registered' – demalexx 2010-02-12 05:29:56

回答

2

的UTF編碼,佔用了每個字符的2字節是UTF-16:

print repr(u'あいうえお'.encode('utf-16be')) 
print repr(u'あいうえお'.encode('utf-16le')) 
+0

酷! utf-16le適合我,謝謝! – demalexx 2010-02-12 05:34:47

+0

注意:並非所有的代碼點都可以用UTF-16表示。 – 2010-02-12 05:57:14

+2

是的,他們可以。但是,我說它使用每個字符2個字節是不準確的。一些將佔用4個字節,由「代理對」組成。 – 2010-02-12 06:01:53

相關問題