On Thu, May 23, 2013 at 4:17 PM, Philip Martin <philip.mar...@wandisco.com> wrote: > [bringing in dev@s.a.o] > > QXO <qxodr...@gmail.com> writes: > >> os: windows >> encoding:GBK ( chcp 936 ) >> >> The svnadmin upgrade command output message first line encoding >> issue(UTF-8 show in GBK),But the second line is right encoding! >> >> 宸插彇寰楃増鏈簱閿佸畾銆?璇风◢鍊欙紱鍗囩骇鐗堟湰搴撳彲鑳介渶瑕佷竴娈垫椂闂?.. >> >> 完成升级。 >> >> if change console encoding to UTF-8 (chcp 65001),output message is : >> >> Repository lock acquired. >> Please wait; upgrading the repository may take some time... >> >> Upgrade completed. > > Those two lines are produced by different code paths. The first line > is produced by repos_notify_handler: > > svn_error_clear(svn_stream_printf(feedback_stream, scratch_pool, > _("Repository lock acquired.\n" > "Please wait; upgrading the" > " repository may take some time...\n"))); > > The second line is produced by: > > SVN_ERR(svn_cmdline_printf(pool, _("\nUpgrade completed.\n"))); > > and svn_cmdline_printf uses svn_cmdline_cstring_from_utf8 to do a UTF8 > to native conversion. > > So it appears the UTF8 to native conversion is missing from > repos_notify_handler. I think repos_notify_handler should be using > svn_stream_printf_from_utf8 rather than svn_stream_printf. >
NO. From GETTEXT(3) man pages: In both cases, the functions also use the LC_CTYPE locale facet in order to convert the translated message from the translator's codeset to the ***current locale's codeset***, unless overridden by a prior call to the bind_textdomain_codeset function. So svn_cmdline_printf SHOULD NOT assume the input string is UTF-8 coded, it it encoded to the ***current locale's codeset***. -- Regards, Dongsheng