附加到文本文件时,非英文字符会损坏

Posted

技术标签:

【中文标题】附加到文本文件时,非英文字符会损坏【英文标题】:While appending to text file, non-english characters get corrupted 【发布时间】:2021-07-28 17:09:44 【问题描述】:

我正在尝试将一些文本附加到 js 文件中,它包含非英语字符,例如 'ç,ş,ı'。

附加文本是动态的,当它包含非英文字符时,js文件中的非英文字符会损坏。

string = ' "type": "Feature", "properties":  "color": "' + colors[color] + '", "geometry": "Point", "name": " ' + user_input + '", "description": "' + desc + '" , "geometry":  "type": "Point", "coordinates": [ ' + str(lng) + ', ' + str(lat) + ' ]  ,];'

f = open('mapdata.js', 'a')
f.write(string)
f.close()

【问题讨论】:

【参考方案1】:

如果您尝试使用 unicode 字符串写入文件,当您将 unicode 字符串写入文件时,python 会尝试将其编码为 ASCII。这就是文本被破坏的原因。修复将文本编码为utf-8 并将文件作为二进制文件打开。

string = ' "type": "Feature", "properties":  "color": "' + colors[color] + '", "geometry": "Point", "name": " ' + user_input + '", "description": "' + desc + '" , "geometry":  "type": "Point", "coordinates": [ ' + str(lng) + ', ' + str(lat) + ' ]  ,];'

f = open('mapdata.js', 'ab')
string.encode('utf-8')
f.write(string)
f.close()

【讨论】:

以上是关于附加到文本文件时,非英文字符会损坏的主要内容,如果未能解决你的问题,请参考以下文章

附加到文本文件(不覆盖!)

如何一次读取并附加到文本文件?

Cython 编译将文本附加到文件名,如何摆脱它?

PHP将文件文本附加到所有javaScript文件

在Python中将文本附加到文件[重复]

遍历文件时,如何将每个文件名附加到列表中? [复制]