import boto3
import csv
import io
def lambda_handler(event, context):
s3 = boto3.resource('s3')
bucket = s3.Bucket("my-bucket-name-goes-here")
fn = "sample_csv_lambda.csv"
write_csv(fn, bucket)
def write_csv(target_filename, bucket):
buff = io.StringIO()
writer = csv.writer(buff, dialect="excel", delimiter=",")
writer.writerow([f"header{i}" for i in range(1, 6)])
writer.writerow([1, 2, 3, 4, 5])
writer.writerow(["u", "b", "w", "d", "ş"])
writer.writerow(["n", "p", "m", "q", "ğ"])
buff2 = io.BytesIO(buff.getvalue().encode(encoding="UTF-8"))
print(buff2.getvalue().decode("utf-8"))
bucket.upload_fileobj(buff2, target_filename)
从第二行到最后一行的打印值按预期输出特殊字符,但是一旦我下载并打开CSV文件,其中的字符仍然不是UTF-8。
PS:我喜欢我的代码的当前形式,因为我不需要像其他一些问题/答案建议的那样临时将文件保存在“/tmp”文件夹中。我也不需要打包和上传Pandas/Unicodecsv到我的Lambda环境;对我这样的初学者来说太复杂了。回答时请记住这一点。
简短回答
文件已经是UTF8,没有BOM。若要发出BOM,请在编码时使用UTF-8-SIG
而不是UTF-8
。
冗长的回答
问题内容: 我有一个包含unicode字符串的词典列表。 可以将字典列表写入CSV文件。 我希望CSV文件以UTF8编码。 该模块无法处理将unicode字符串转换为UTF8的操作。 该模块文档具有的一切转换为UTF-8的例子: 它也有一个类。 但是…我该如何处理这些?他们是否不必将自己插入其中,以捕获反汇编的字典并对其进行编码,然后再将其写入文件中?我不明白 问题答案: 更新 :第三方unico
我有一个。csv文件,以西班牙语编写,因此它具有特殊字符,如ñ,á,é,í,ó,ú。因此,如果我在记事本中打开它,我可以看到所有正确书写的字符,并且我已经用UTF-8编码保存了文件。但是,当我打开RStudio并使用以下方式导入数据时: 我得到了所有数据集,但编码不正确,即: 应包括以下内容: 我已经尝试了所有的方法,我不知道还能做什么,因为我已经检查过R是否使用UTF-8编码,文件是否以相同的方
我需要将多个CSV文件(使用不同的编码)转换为UTF-8。 这是我的代码: 当我尝试运行此代码时,我得到以下错误: UnicodeDecodeError:'utf-8'编解码器无法解码位置5057的字节0xf3:无效的延续字节 有人能帮我吗?谢谢
我需要导出javascript数组到CSV文件和下载。我这么做了,但是'ó,ü,ö,ó,ş'这些字符在CSV文件中看起来像'\\\\\\\\\\\'。我已经尝试了这个网站上推荐的许多解决方案,但对我不起作用。 我添加了我的代码片段,有人能解决这个问题吗?
我是ServiceStack的新手。它具有为数据提供csv文件的功能,但我需要以UTF8格式下载它,因为我得到一些特殊字符。我尝试过这个配置设置。 但运气不好。。请指出我做错了什么。
你好,我想写一个带有HEBREW文本的CSV。它写了一些符号,而不是希伯来文。下面是我的PHP代码。 我在互联网上查了一下,添加了“fputs($fp,$bom=(chr(0xEF).chr(0xBB).chr(0xBF))”,但没有成功。谁能帮帮我吗。 下面是我得到的结果。