UTL_FILE写入文件,文件用记事本打开不换行的问题

承接之前的一篇
之前将一行数据写完然后用UTL_FILE.NEW_LINE(l_output);换行结束
但是发现一个问题,生成的文件用记事本打开不会自动换行,像这样
不换行
但是用notepad打开会自动换行,因为windows记事本的换行是\r\n,而其他一般是\n。有一种手工的方法就是用notepad打开然后将所有\n替换成\r\n。
替换

不想手工改的话,最后解决方法如下:

UTL_FILE.put(l_output,chr(13)||chr(10));
UTL_FILE.NEW_LINE(l_output,0);
用上面的代码替换UTL_FILE.NEW_LINE(l_output);

也可以这样

UTL_FILE.FFLUSH(l_output);-- FFLUSH强制将缓冲的数据写入文件
UTL_FILE.put(l_output,chr(13)||chr(10));

在这个过程中发现一个问题如果只用UTL_FILE.put(l_output,chr(13)||chr(10));输出的文件内容会减少,这个有点不太明白,可能跟缓存有关。如果有大神知道原因的话欢迎评论赐教:)
最后瞎折腾就加了一个UTL_FILE.NEW_LINE(l_output,0); OK了

还有一个问题就是导出的csv文件直接用excel打开,中文乱码了,知道解决的大神求赐教
用记事本打开然后另存为的方法可以解决,但是不想用手工解决的方法。
而且奇怪的是我选择另存为的时候编码显示的就是utf-8,用notepad打开显示也是utf-8,为什么再另存为一次再用excel打开就正常了呢。搞不懂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值