我在scons
构建文件中有这段代码:
with io.open(target[0].get_path(), 'w', encoding="utf-8") as target_file:
target_file.write( unicode("std::string {} = R\"~~~~({})~~~~\";").format(varName,content))
content
变量将包含非ascii字符。在OSX上我没有问题,但在Linux上我遇到UnicodeDecodeError: 'ascii' codec can't decode byte
错误。
奇怪的是,如果我只使用open
,请删除编码,然后将unicode
位反向发生:它适用于Linux而不适用于OSX。
with open(target[0].get_path(), 'w') as target_file:
target_file.write( "std::string {} = R\"~~~~({})~~~~\";".format(varName,content))
有什么问题,我该如何解决?
版本:
答案 0 :(得分:1)
format()
有时会失败,而基本字符串则为ascii。
关于为什么它可以在OSX而不是Linux上运行,每个操作系统都有一种特定的方式来处理字符编码,这可能会导致这种问题。
试试这个:
"your sting {} ".encode('utf-8').format(.....