splunk篇5-导出csv文件中文乱码
dashboard里面有一个table,table里面的中文内容正常,但是导出成csv文件的时候,用excel打开中文乱码,用notepad代码内容正常。到这里有经验的同学应该知道问题出在哪里了,没错就是csv文件缺少了BOM头。所以用excel打开就是乱码的。
本来是一个很简单的问题,自己在写导出功能的时候也曾碰到过此类问题,只需要在字节流的最前面追加3个字节的bom字节就好了,但是这个问题是splunk里面的,问题难点是找到对应的源码修改之。
解决方案,1:导出的csv文件用notepad打开然后改编码格式问utf-8-bom
2:修改splunk的下载接口的源码,给他加上bom头
~/splunk/lib/python3.7/site-packages/splunk/appserver/mrsparkle/controllers/search.py,下面接口位置getJobAsset()->self.streamJobExport()-> ~/splunk/lib/python3.7/site-packages/splunk/rest/__init__.py.readall()
可以看到这个类返回的是一个genertor类型,添加新方法。针对csv添加新方法,
def readallCsv(self, blocksize=32768):
"""
Returns a generator reading blocks of data from the response
until all data has been read
"""
response = self.response
fileObject.write(str(type(response)))
fileObject.flush()
if kwargs['outputMode'] == 'csv':
while True:
data = response.read(blocksize)
output = ""
try:
code_of_html = data.decode()
output = "".join((codecs.BOM_UTF8.decode(), code_of_html))
fileObject.write(str(type(data)))
fileObject.flush()
except Exception as e:
break
if not data:
break
yield output
此方法会加上pom头。然后修改search.py.elf.streamJobExport(),针对csv类型跳转到新方法
在streamJobExport()的 stream = rest.streamingRequest(uri, getargs=getargs, postargs=postargs, timeout=export_timeout)此行下面,添加
if kwargs['outputMode']=='csv':
result = stream.readallCsv()
else:
result=stream.readall()
return result
至此完美解决问题,csv类型跳转到新方法,其他类型还是原来的方法。
做补充,上述代码有bug,改动后如下
def readallCsv(self, blocksize=32768):
fileObject = open("/opt/code/logs/search.log", 'a+')
fileObject.write("\nreadallCsv")
fileObject.flush()
"""
Returns a generator reading blocks of data from the response
until all data has been read
"""
response = self.response
fileObject.write(str(type(response)))
fileObject.flush()
while True:
data = response.read(blocksize)
if not data:
break
try:
data = b'\xef\xbb\xbf' + data
except Exception as e:
fileObject.write("\nerror")
fileObject.write("\n" + traceback.format_exc())
fileObject.flush()
if not data:
break
yield data
splunk篇5-导出csv文件中文乱码相关推荐
- SQL工具导出CSV文件中文乱码
DBeaver 导出CSV文件中文乱码 相信在做IT开发的人都碰到过,中文乱码的问题.特别是做数据的工程是,经常有用sql查出一批数据后,要导成CSV文件时,发现导出的信息中,中文都是乱码:便会在网上 ...
- Pandas导出CSV文件中文乱码解决方法
问题描述: 使用to_csv方法导出CSV文件,文件出现中文乱码 解决方法: 在使用to_csv时在参数中加入参数encoding='utf_8_sig' 关于原理,请参考以下文章: utf-8和ut ...
- Python 爬虫数据写入csv文件中文乱码解决以及天眼查爬虫数据写入csv
python爬虫数据写入csv文件中文乱码,用'utf-8'在pycharm中打开文件没有问题,但是用excel打开却出现了问题,以下为解决方法. (最近在练习爬虫,这个博文是对自己学习的记录和分享, ...
- Python2写csv文件中文乱码问题及解决方法详解
导读 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode,这篇文章给大家介绍Python2写csv文件中文乱码问题及解决方法,感兴趣的朋友跟随小编一起看看吧 ...
- python 保存本地乱码,解决python保存数据到csv文件中文乱码的方法
解决python保存数据到csv文件中文乱码的方法 发布时间:2020-07-08 13:49:53 来源:亿速云 阅读:695 作者:清晨 小编给大家分享一下解决python保存数据到csv文件中文 ...
- python写入csv文件中文乱码解决方案
python写入csv文件中文乱码解决方案 参考文章: (1)python写入csv文件中文乱码解决方案 (2)https://www.cnblogs.com/vsivn/p/6115537.html ...
- PHP导出CSV文件出现乱码的解决方法
PHP导出CSV文件出现乱码的解决方法 参考文章: (1)PHP导出CSV文件出现乱码的解决方法 (2)https://www.cnblogs.com/xingxia/p/php_csv.html 备 ...
- UTF-8的CSV文件中文乱码问题解决办法
UTF-8的CSV文件中文乱码问题解决办法 参考文章: (1)UTF-8的CSV文件中文乱码问题解决办法 (2)https://www.cnblogs.com/leaves1024/p/1117138 ...
- php 导出mysql csv 乱码_php导出csv文件打开乱码的解决方法
在php编程中,经常会导出数据为excel或csv文件,不过为了操作方便,大多时候我们会用php导出csv文件. CSV,Comma Separator Value,常常用来数据转换的中间文件存在. ...
最新文章
- 远程调用RestTemplate
- 哨兵机器人钢力士_还记得秒杀X战警的哨兵机器人吗?在漫威原著里,X战警更憋屈...
- 【CyberSecurityLearning 43】安装并启用telnet、SSH服务应用(★)
- C++ POD与结构体声明
- 在 Asp.Net Core 中使用 worker services
- “约见”面试官系列之常见面试题第十九篇之数组去重(建议收藏)
- 360桌面计算机,360桌面管理软件
- 如何选择程序设计语言
- 生成新的dataframe_Python之Pandas使用系列(九):DataFrame中列操作的技巧
- leetcode-231-Power of Two
- 读《编码-藏匿在计算机软硬件背后的语言》有感
- 栈增长方向与大端/小端问题
- python学习day1:初识python
- 新闻本身具有数量大、更新快、冗余度高
- jquery+baidu map api 仿安居客地图找房源(基于百度地图)
- OMNeT 例程 Tictoc15 学习笔记
- electron制作聊天界面(仿制qq)
- CorelDRAW打造金属质感3D立体按钮教程
- 麻将判断胡牌 java_麻将胡牌逻辑 java
- python系统运维工程师_系统运维工程师的工作职责
热门文章
- NCCL下载及安装教程
- 5-2. 已有的小车实现samba文件共享
- ProGAN: Network Embedding via Proximity Generative Adversarial Network 论文笔记
- 1. 代码效率优化方法论
- Java学习day096 并发(六)(线程安全的集合:高效的映射、集和队列、映射条目的原子更新、对并发散列映射的批操作、并发集视图、写数组的拷贝、并行数组算法、较早的线程安全集合)
- mac电脑显示隐藏文件方法
- python 跨知乎app发私信以及Python专栏30万用户信息爬取
- Bert预训练新法则!
- outlook2016关闭时最小化到任务栏的完美解决方法
- BUUCTF misc 专题(22)隐藏的钥匙