• R/O
  • HTTP
  • SSH
  • HTTPS

nkf: Commit

nkfのGitリポジトリです。


Commit MetaInfo

Revisionc9c993ffc2b617083c82b701495ce2143be5232e (tree)
Time2018-12-15 17:22:47
AuthorNARUSE, Yui <naruse@user...>
CommiterNARUSE, Yui

Log Message

--fb-java doesn't follow java's spec

Though --fb-java's name insista Java's behavior but it behaved as
what Python does. [nkf-bug:38800]

Change Summary

Incremental Difference

--- a/nkf.c
+++ b/nkf.c
@@ -1111,18 +1111,26 @@ encode_fallback_java(nkf_char c)
11111111 (*oconv)(0, '\\');
11121112 c &= VALUE_MASK;
11131113 if(!nkf_char_unicode_bmp_p(c)){
1114- (*oconv)(0, 'U');
1115- (*oconv)(0, '0');
1116- (*oconv)(0, '0');
1117- (*oconv)(0, bin2hex(c>>20));
1118- (*oconv)(0, bin2hex(c>>16));
1114+ int high = (c >> 10) + NKF_INT32_C(0xD7C0); /* high surrogate */
1115+ int low = (c & 0x3FF) + NKF_INT32_C(0xDC00); /* low surrogate */
1116+ (*oconv)(0, 'u');
1117+ (*oconv)(0, bin2hex(high>>12));
1118+ (*oconv)(0, bin2hex(high>> 8));
1119+ (*oconv)(0, bin2hex(high>> 4));
1120+ (*oconv)(0, bin2hex(high ));
1121+ (*oconv)(0, '\\');
1122+ (*oconv)(0, 'u');
1123+ (*oconv)(0, bin2hex(low>>12));
1124+ (*oconv)(0, bin2hex(low>> 8));
1125+ (*oconv)(0, bin2hex(low>> 4));
1126+ (*oconv)(0, bin2hex(low ));
11191127 }else{
11201128 (*oconv)(0, 'u');
1129+ (*oconv)(0, bin2hex(c>>12));
1130+ (*oconv)(0, bin2hex(c>> 8));
1131+ (*oconv)(0, bin2hex(c>> 4));
1132+ (*oconv)(0, bin2hex(c ));
11211133 }
1122- (*oconv)(0, bin2hex(c>>12));
1123- (*oconv)(0, bin2hex(c>> 8));
1124- (*oconv)(0, bin2hex(c>> 4));
1125- (*oconv)(0, bin2hex(c ));
11261134 return;
11271135 }
11281136
--- a/nkf_test.pl
+++ b/nkf_test.pl
@@ -1353,6 +1353,11 @@ printf "%-40s", "[nkf-forum:65482] ";
13531353 "\x1b\x24\x42\x7f\x21\x80\x21\x1b\x28\x42\n",
13541354 "\xf0\x40\xf0\x9f\x0a");
13551355
1356+printf "%-40s", "[nkf-bug:38800] ";
1357+ &test("$nkf -W -e --fb-java",
1358+ "\xF0\xA0\xAE\xB7",
1359+ "\\uD842\\uDFB7");
1360+
13561361 # [KNOWNBUG]
13571362 # printf "%-40s", "[ruby-dev:47057] ";
13581363 # &test("$nkf -jW -M --cp932",
Show on old repository browser