Gallery Remote 中文解決方法
2005年7月3日
Gallery 系統有一個叫 Gallery Remote 的 Java AP,可以很方便的管理 Gallery 上的像簿與像片,不過一直以來中文顯示都會有問題,所以我也一直不想用。
最近才突然發現有解決的方法了,這就是 Open Source 的好處呀!
到 CVS 上下載Gallery Remote 1.4 的 source,在 GalleryComm2.java 中加入一個 method 如下:
static String getEscapeString(String str) {
if (str == null) {
return null;
}
char[] bys = new char[str.length()];
str.getChars(0, str.length(), bys, 0);
StringBuffer ttsb = new StringBuffer();
for(int k = 0; k < bys.length; k++) {
switch (bys[k]) {
case '':
case '\'':
case '\"':
ttsb.append("");
ttsb.append((char) bys[k]);
break;
case '\r':
ttsb.append("\r");
break;
case '\n':
ttsb.append("\n");
break;
case '\t':
ttsb.append("\t");
break;
default:
if (bys[k] < ' ' || bys[k] >= '\200') {
//System.out.println("unicode...");
ttsb.append("\u" /*243*/);
String s13 = Integer.toHexString(bys[k]);
for (int l = s13.length(); l < 4; l++) {
ttsb.append('0');
}
ttsb.append(s13);
}
else {
ttsb.append( (char) bys[k]);
}
}
}
return ttsb.toString();
}
然後找到 requestResponse() method 中的
p.load(new StringBufferInputStream(response)); 敘述,修改如下:
//p.load(new StringBufferInputStream(response)); p.load(new StringBufferInputStream(getEscapeString(response)));
這樣就能解決中文的問題囉~~~
這裡是我已前修改重新 compile 過的版本,先安裝原來的版本,再下載修正檔覆蓋至安裝目錄就可以用了。
修正前:
修正後:
Categories: 資訊


靠~超好用的啦
感謝站長提供這麼棒的修正方式,請教一個問題我目前使用GalleryRemote 版本是v1.5.1-b15,當我下載使用您的修正程式也順利的解決了中文顯示問題,但是出現了了一個小問題,就是每次開啟GalleryRemote 程式都會出現一個警告訊息說是偵測不到imagemagick,可否請您協助幫忙重新 compile v1.5.1-b15 可以使用的GalleryRemote.jar 檔案.
萬分感激!!!
Hi, 我在網站上提供的是用1.4的source code編譯的,
上次電腦重灌後就一直沒用GalleryRemote了,所以也沒注意到出了1.5。
我剛剛測試了一下,裝 v1.5.1-b15(NoVM版),但是用1.4 的 GalleryRemote.jar取代掉,並沒有出現您提到偵測不到 imagemagick的訊息(我是用JRE 1.5.0_06)。
可是因為我的 Gallery更新到 2.0 版了,這樣反而會出現另一種亂碼,您的 Gallery是1.5的嗎?
不過目前似乎沒辦法從 Sourceforge的 CVS server下載 1.5 版的 source code,等可以下載後我再用1.5的重新 compile試試。
tight cunt