Lua cjson不能解码特定的unicode字符



当尝试解码特定的unicode字符时,我从lua cjson获得以下错误,

root@9dc8433e6d83:~/torch-rnn# th train.lua -input_h5 data/aud.h5 -input_json data/aud.json -batch_size 50 -seq_length 100 -rnn_size 256 -max_epochs 50
Running with CUDA on GPU 0  
/root/torch/install/bin/luajit: train.lua:77: Expected value but found invalid unicode escape code at character 350873
stack traceback:
    [C]: in function 'read_json'
    train.lua:77: in main chunk
    [C]: in function 'dofile'
    /root/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:145: in main chunk
    [C]: at 0x00406670
根据来源,我可以看到那列火车。Lua read_json在后台使用cjson。

所讨论的unicode转义码是uda85

如果我转到https://www.branah.com/unicode-converter,它会告诉我转义应该解码成的字符。

使用python unichr(55941)生成unicode转义,并通过python脚本输出的重定向将其写入具有PYTHONIOENCODING=UTF-8的文件。

下面演示了如何生成字符;

echo "print unichr(55941)" > test.py
python test.py
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    print unichr(55941)
UnicodeEncodeError: 'ascii' codec can't encode character u'uda85' in position 0: ordinal not in range(128)
# export PYTHONIOENCODING=UTF-8
# python test.py
���
# python test.py > tfile
# cat tfile
���
# python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f=open("tfile",'r')
>>> s=f.readline()
>>> s
'xedxaax85n'
>>> print s
���
>>> s.decode('utf-8')
u'uda85n'

我要做的是在0-65535范围内取一组整数,并使用python将它们映射为UTF-8字符,并将它们写入文件。然后我想使用torch-rnn,它使用LUA在字符序列上训练RNN。当我试图运行火车时,我遇到了错误。python脚本/pre - process.py

问题似乎是unicode代理,理解这意味着我可以过滤/切换它们为不同的值。在这个用例中,这不是一个大问题。

最新更新