2015-07-04 14 views
0

我正在使用Vala和GTK,但我認爲有人可能能夠在沒有任何這些事情相關的情況下提供幫助。使用Vala我可以訪問一些C函數,如printf,並在必要時創建綁定到其他任何東西。如何解碼轉義的UTF-8字符串?

GTK的Entry小部件轉義文本,當字符串在內部使用時,它工作正常。但是,如果我嘗試將它放入輸出流中,焦糖布朗就會像cr \ 303 \ 250me br \ 303 \ 273l \ 303 \ 251e一樣逃脫。

使用printf,任何GTK函數,或者Vala支持的任何東西,我怎樣才能避開這些字符?

回答

1

假設您希望將該字符串看作Unicode代碼點列表,則可以使用string.get_next_char一次遍歷字符串一個代碼點。參考中有一個例子。

如果你想要字形,我不知道用GLib/Vala做這個的方法。

+0

問題是所有的GTK函數只是返回字符串與斜槓轉義。通過使用entry.get_text()或entry.buffer.text,文本字面上是斜槓,數字不是字符串中編碼的UTF-8字符。它的轉義序列。 \t 22,C \t 23,R \t 24,\ \t 25,3 \t 26,0 \t 27,3 \t 28,\ \t 29,2 \t 30,5 \t 31, 0 \t 32,M \t 33,E \t 34, \t 35,b \t 36,R \t 37,\ \t 38,3 \t 39,0 \t 40,3 \t 41,\ \t 42,2 \t 43,7 \t 44,3 \t 45,升 \t 46,\ \t 47,3 \t 48,0 \t 49,3 \t 50,\ \t 51,2 \t 52,5 \t 53,1 – kagronick

+0

你用什麼行來打印'entry.get_text()'返回的字符串?這不應該發生... – andlabs

+0

試試吧。將crèmebrûlé粘貼到條目中。只需將其打印到屏幕上即可。它將被編碼。我所做的只是將它發送到DataOutputStream,但如果我在任何時候打印它,那麼它就是如何編碼的。 – kagronick