トップ «前の日記(2006-02-03) 最新 次の日記(2006-02-11)» 編集

Heretic Programmer

エントリを読んで笑ったら笑った回数だけ足跡「☆」を押してください!!足跡がつきます(藁
2004|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|07|08|09|10|11|12|
2010|01|03|04|05|12|

2006-02-09

[Java]Subversion文字化け

JNIのライブラリjavahlからアクセスするとエラーメッセージが文字化けする。原因は、マルチバイト文字をNewStringUTFを使ってJavaのStringを生成しているためだった。NewStringUTFはutf-8の文字列にしか使えない。次のようにmbstowcsを使ってunicodeに変換してからNewStringでStringを生成する必要がある。
--- subversion/bindings/java/javahl/native/JNIUtil.cpp.orig	2006-02-04 15:33:18.913752016 +0900
+++ subversion/bindings/java/javahl/native/JNIUtil.cpp	2006-02-04 16:02:08.579802808 +0900
@@ -515,12 +515,21 @@
  */ 
 jstring JNIUtil::makeJString(const char *txt)
 {
+    int wlen;
+    wchar_t *wtxt;
+
     if(txt == NULL) // NULL string can be converted to a null java string
     {
         return NULL;
     }
+
+    wlen = mbstowcs(NULL, txt, 0);
+    wtxt = (wchar_t *)malloc(sizeof(wchar_t)*wlen+1);
+    wlen = mbstowcs(wtxt, txt, wlen);
+    wtxt[wlen] = '\0';
+
     JNIEnv *env = getEnv();
-    jstring js = env->NewStringUTF(txt);
+    jstring js = env->NewString((jchar *)wtxt, wlen);
     return js;
 }
 /**
...うーん、tigrisに何故かログインできん。バグ報告もパッチ登録もできんな。困った。
本日のツッコミ(全5件) [ツッコミを入れる]
# Steven (2007-04-15 01:15)

Thank you!<br>[url=http://xrmnzwsq.com/zzhj/zefa.html]My homepage[/url] | [url=http://vqgketkg.com/crzb/jwtm.html]Cool site[/url]

# Dixie (2007-09-27 20:13)

Great work!<br>[url=http://xsytttef.com/rdcc/wwal.html]My homepage[/url] | [url=http://qrhmttvt.com/jtwu/qvjr.html]Cool site[/url]

# Eagles (2007-12-13 11:25)

sale@mp3.com

# Hortencia Albert (2008-01-06 12:56)

8xtfHX clip privat amateur ,

# Hortencia Albert (2008-01-06 12:56)

8xtfHX clip privat amateur ,

[]