2013-10-09 46 views
5

我目前使用的是一個代碼(在一個問題上的最佳答案),我發現here一切正常,直到你給它一個日本String輸入。如何使用GSON以UTF-8序列化日文字符?

我認爲UTF-8字符集會做的伎倆,但我不確定哪部分代碼不允許日文字符被序列化。

例如,如果我序列化一些基本的東西,如"ひらがな"它會輸出垃圾字符。

我在做什麼是一樣的東西

String serialized = serialize("ひらがな"); 
String deserialized = deserialize(serialized, new TypeToken<String>() {}.getType()); 
System.out.println(deserialized); 

但我得到一個垃圾deserialized

有人可以擺脫一些光?謝謝。

+1

我發誓我今天已經看到了這個確切的問題... – ppeterka

+0

也請添加一個鏈接到您使用的答案,或張貼串行器實例的完整代碼。無線代碼,這個問題不能回答... – ppeterka

+0

@ ppeterka66,我已經添加了原始問題的鏈接,我從那裏得到的代碼。代碼BalusC的積分。 – Incognito

回答

3

我不知道你的問題的確切答案,但我可以說我有類似的問題,這裏是我的解決方案。也許這是給你的提示:

我只使用GSON進行反序列化。我不得不從

json = gson.fromJson(new InputStreamReader(is), parseType); 

更改下面的代碼

json = gson.fromJson(new InputStreamReader(is,"UTF-8"), parseType); 

所以這個問題是在我的輸入流的讀者,而不是GSON本身。我想知道你是否需要使用string reader進行反序列化或什麼。對不起,我不能給你一個更具體的答案。

+2

這與我得到的解決方案是一樣的。很高興您發佈,因爲我解決了問題後忘了發佈我的解決方案:D – Incognito

+1

如何序列化UTF-8編碼的對象,幫助 –