GNU bug report logs - #23814
24.5; bug of hz coding-system

Previous Next

Package: emacs;

Reported by: ynyaaa <at> gmail.com

Date: Tue, 21 Jun 2016 12:23:02 UTC

Severity: normal

Found in version 24.5

Fixed in version 26.1

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: ynyaaa <at> gmail.com
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: handa <handa <at> gnu.org>, 23814 <at> debbugs.gnu.org
Subject: bug#23814: 24.5; bug of hz coding-system
Date: Sun, 24 Jul 2016 17:21:08 +0900
Eli Zaretskii <eliz <at> gnu.org> writes:

> Ping!  Could you please try this patch and see if it solves the
> problem?

The patch seems to make better results.

But I found other bugs about decodings of "~" escape.
"~~" and "~{!!~}" should be encoded and decoded as below.
    "~~" -> "~~~~" -> "~~"
    "~{!!~}" -> "~~{!!~~}" -> "~{!!~}"

In really they are encoded properly, but decoded in wrong way.
    (decode-coding-string (encode-coding-string "~~" 'hz) 'hz)
    => "~"
    (decode-coding-string (encode-coding-string "~{!!~}" 'hz) 'hz)
    => #("\x3000" 0 1 (charset chinese-gb2312))

These behaviors are not affected by the patch.

>> diff --git a/lisp/language/china-util.el b/lisp/language/china-util.el
>> index e531640..9735bd6 100644
>> --- a/lisp/language/china-util.el
>> +++ b/lisp/language/china-util.el
>> @@ -95,7 +95,9 @@ decode-hz-region
>>  	(goto-char (point-min))
>>  	(while (search-forward "~" nil t)
>>  	  (setq ch (following-char))
>> -	  (if (or (= ch ?\n) (= ch ?~)) (delete-char -1)))
>> +          (if (= ch ?{)
>> +              (search-forward "~}" nil 'move)
>> +            (if (or (= ch ?\n) (= ch ?~)) (delete-char -1))))
>>  
>>  	;; "^zW...\n" -> Chinese GB2312
>>  	;; "~{...~}"  -> Chinese GB2312
>> @@ -141,7 +143,7 @@ encode-hz-region
>>    (save-excursion
>>      (save-restriction
>>        (narrow-to-region beg end)
>> -
>> +      (put-text-property beg end 'charset 'chinese-gb2312)
>>        ;; "~" -> "~~"
>>        (goto-char (point-min))
>>        (while (search-forward "~" nil t)	(insert ?~))
>> 
>> 




This bug report was last modified 8 years and 86 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.