Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Python 2.7中将非ascii字符打印到文件中_Javascript_Python_Character Encoding_Special Characters - Fatal编程技术网

Javascript 如何在Python 2.7中将非ascii字符打印到文件中

Javascript 如何在Python 2.7中将非ascii字符打印到文件中,javascript,python,character-encoding,special-characters,Javascript,Python,Character Encoding,Special Characters,我试图通过改变一些javascript的字符代码来混淆它们,但我发现在Python2.7中,我无法正确打印超出特定范围的字符 例如,下面是我要做的: f = open('text.txt','w') f.write(unichr(510).encode('utf-8')) f.close() 我不能写unichr(510),因为它说ascii编解码器超出范围。所以我用utf-8编码。这会将单个字符u'\u01fe'转换为两个'\xc7\xbe' 现在,在javascript中,很容易获得字符代

我试图通过改变一些javascript的字符代码来混淆它们,但我发现在Python2.7中,我无法正确打印超出特定范围的字符

例如,下面是我要做的:

f = open('text.txt','w')
f.write(unichr(510).encode('utf-8'))
f.close()
我不能写unichr(510),因为它说ascii编解码器超出范围。所以我用utf-8编码。这会将单个字符
u'\u01fe'
转换为两个
'\xc7\xbe'

现在,在javascript中,很容易获得字符代码510的符号:

String.fromCharCode(510)
给出单个字符:Ǿ

我从Python中得到的是两个字符:玟¾

如果我将这些字符传递给javascript,我将无法检索原始的单个字符

我知道用python打印Ǿ字符是可能的,但我还没有弄明白。我已经使用unichr()而不是chr(),并将其编码为“utf-8”,但我仍然不够。我还了解到Python3在chr()函数中内置了此功能。但这对我没有帮助

有人知道我怎样才能完成这项任务吗


谢谢。

Python正在将字节
'\xc7\xbe'
写入文件:

In [45]: unichr(510).encode('utf-8')
Out[45]: '\xc7\xbe'
JavaScript显然正在形成unicode
u'\xc7\xbe'

In [46]: 'Ǿ'.decode('utf-8')
Out[46]: u'\xc7\xbe'

In [47]: 'Ǿ'.decode('utf-8').encode('latin-1')
Out[47]: '\xc7\xbe'

问题在于JavaScript如何将字节转换为unicode,而不是Python如何写入字节。

您应该以二进制模式打开文件:

f = open('text.txt','wb')
然后写入字节(在Python 3中):

或者在Python 2中:

f.write(unichr(510).encode('utf-8'))
最后,关闭文件

f.close()
或者你可以这样做:

>>> f = open('e:\\text.txt','wt',encoding="utf-8")
>>> f.write(chr(510))
>>> f.close()
之后,您可以将文件读取为:

>>> f = open('e:\\text.txt','rb')
>>> content = f.read().decode('utf-8')
>>> content
'Ǿ'

在我的Win7和Python3上测试。它应该可以与Python2.X一起使用,这个怎么样

import codecs
outfile = codecs.open(r"C:\temp\unichr.txt", mode='w', encoding="utf-8")
outfile.write(unichr(510))
outfile.close()

如何将
'\xc7\xbe'
传递给JavaScript?这两个连续的字节(不要与字符暾混淆)是Ǿ的UTF-8编码,JavaScript应该识别它(或者至少与UTF-8编码的JS文件中出现的Ǿ没有区别)。我将
'\xc7\xbe'
保存到JavaScript文件中。而且,它把它当作两个独立的字符@Jwodderdoe似乎没有改变。仍然得到这两个字符。您应该告诉您的文本编辑器以uft-8编码打开它。但它与我的Win7+Python3.3+记事本(或UltraEdit)完美配合。看起来这可能是问题的解决方案。希望它能很容易地移植到javascript。谢谢我很乐意帮助你。我刚刚在我的Win7+Python 2.7上测试了它。它也非常有效。你可以用记事本打开它来检查结果。这可能是notepad++的问题。该文件是javascript。我用for循环解码js,并用如下内容调整每个字符:String.fromCharCode(l.charCodeAt(I)-150);另外,通过查看文件,我可以看到Python正在写入两个字符,而它应该写入一个字符。for循环旨在迭代每个字符,因此它正在迭代每个字节,这不是我想要的。您希望将哪个字节写入文件?选择范围必须从
'\x00'
'\xff'
(256个选项)。我不知道@unutbu。信不信由你,我无意中/不知何故用python打印了Ǿ,但不知道我是如何做到的,我试图重复我的步骤,但没有效果。这对我使用python 2.7非常有效,谢谢。
>>> f = open('e:\\text.txt','rt',encoding='utf-8')
>>> f.read()
'Ǿ'
import codecs
outfile = codecs.open(r"C:\temp\unichr.txt", mode='w', encoding="utf-8")
outfile.write(unichr(510))
outfile.close()