[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#50391: 28.0.50; json-read non-ascii data results in malformed string
From: |
Philipp |
Subject: |
bug#50391: 28.0.50; json-read non-ascii data results in malformed string |
Date: |
Sun, 5 Sep 2021 09:31:40 +0200 |
> Am 05.09.2021 um 06:19 schrieb Zhiwei Chen <condy0919@gmail.com>:
>
>
> When fetch json from youdao (a dict service in China).
>
> #+begin_src elisp
> (url-retrieve
> "https://dict.youdao.com/suggest?q=accumulate&le=eng&num=80&doctype=json"
> (lambda (_status)
> (goto-char (1+ url-http-end-of-headers))
> (write-region (point) (point-max) "/tmp/acc1.json")))
> #+end_src
>
> Then C-x C-f "/tmp/acc1.json", the file is correctly encoded without
>
> But If `json-read' then `json-insert', the file is malformed even if
> uchardet shows the encoding of the file is utf-8.
>
> #+begin_src elisp
> (url-retrieve
> "https://dict.youdao.com/suggest?q=accumulate&le=eng&num=80&doctype=json"
> (lambda (_status)
> (goto-char (1+ url-http-end-of-headers))
> (let ((j (json-read)))
> (with-temp-buffer
> (json-insert j)
> (write-region (point-min) (point-max) "/tmp/acc2.json")))))
> #+end_src
Does it work if you use the C JSON function (json-parse-buffer) for parsing?
At least for me the two files are then identical.