在我的應用程序中,我正在讀取註冊表以獲取所有TimeZone名稱。 它與原生英文OS機器正常工作。從java註冊表中讀取unicode字符
但是對於中國本土的操作系統,它顯示「????????」。
我正在使用WinRegistry.java,通用文件可用於讀取註冊表中的Java。
下面是從註冊表中讀取字節的方法,但該字節僅包含垃圾字符。
private static String readString(Preferences root, int hkey, String key, String value)
throws IllegalArgumentException, IllegalAccessException,
InvocationTargetException
{
int[] handles = (int[]) regOpenKey.invoke(root, new Object[] {
new Integer(hkey), toCstr(key), new Integer(KEY_READ) });
if (handles[1] != REG_SUCCESS) {
return null;
}
byte[] valb = (byte[]) regQueryValueEx.invoke(root, new Object[] {
new Integer(handles[0]), toCstr(value) });
regCloseKey.invoke(root, new Object[] { new Integer(handles[0]) });
return (valb != null ? new String(valb).trim() : null);
}
在值Valb []字節數組,我收到垃圾字符,所以我使用任何編碼到字節數組字符串轉換,我只得到垃圾字符。 任何人都可以建議我,這種方法的改變會使它工作正常嗎?
檢查這一個http://stackoverflow.com/questions/9309899/converting-byte-to-string –
哪裏看到問號?在控制檯中? – Keerthivasan
我在回顧字符串,並將其放入下拉列表中。 在下拉列表中,我可以看到問號。 – JayRaj