というわけでSubversionを試験的に使ってみることにした。試験的といいつつ、多分これで決まりかな?
ほぼ環境構築はできたのだが、OS Xだけ文字化けを起こしてしまう。しかも濁音、半濁音の文字だけ。
この文字化けのパターンはmod_encodingでも経験したのでUTF-8の仕様の違いが原因であろうとすぐに察しが付いた。この手の問題が起きた場合、たいていプログラム内部ではiconvを使って文字コード変換を行っているので、iconvを使っている部分に手を加えればよい。
OS XのUTF-8(HFS+のファイル名など)をiconvで扱う場合、エンコーディングに「UTF-8-mac」を指定すると正しくエンコードされる。
今回はsubversionのエンコード部分をquick hackして何とか文字化けは解決した。
解決方法はソースコードを医ファイル書き換えるだけでできる。
Sunversion 1.4.5用のパッチ
--- subversion-1.4.5/subversion/libsvn_subr/utf.c_org 2007-12-30 21:14:54.000000000 +0900
+++ subversion-1.4.5/subversion/libsvn_subr/utf.c 2007-12-30 21:19:52.000000000 +0900
@@ -374,7 +374,7 @@
get_ntou_xlate_handle_node(xlate_handle_node_t **ret, apr_pool_t *pool)
{
return get_xlate_handle_node(ret, SVN_APR_UTF8_CHARSET,
- SVN_APR_LOCALE_CHARSET,
+ "UTF-8-mac",
SVN_UTF_NTOU_XLATE_HANDLE, pool);
}
@@ -387,7 +387,7 @@
static svn_error_t *
get_uton_xlate_handle_node(xlate_handle_node_t **ret, apr_pool_t *pool)
{
- return get_xlate_handle_node(ret, SVN_APR_LOCALE_CHARSET,
+ return get_xlate_handle_node(ret, "UTF-8-mac",
SVN_APR_UTF8_CHARSET,
SVN_UTF_UTON_XLATE_HANDLE, pool);
}

0 件のコメント:
コメントを投稿