如何解决使用Utl_file的Oracle UTF8文件编码
我想将文件导出为UTF8编码。 当我检查v $ nls_parameters时,nls_characterset是WE8ISO8859P9。所以我文件的编码是Ansii。
如何在不更改v $ nls_parameters的情况下以UTF8编码导出文件?
DECLARE
v_os_touch_file utl_file.file_type;
p_in_file VARCHAR2(50);
BEGIN
v_os_touch_file := NULL;
p_in_file := NULL;
p_in_file := 'my_file_' || sysdate;
v_os_touch_file := utl_file.fopen(my_path,p_in_file,'w');
FOR i IN (
SELECT
*
FROM
my_table
) LOOP
begin
utl_file.put_line(v_os_touch_file,'TEST' );
utl_file.put_line(v_os_touch_file,i.input);
utl_file.fclose(v_os_touch_file);
END
解决方法
即使NVARCHAR2缓冲区的内容可以是AL16UTF16或UTF8(取决于数据库的国家字符集),文件的内容也始终以UTF8读写。 UTL_FILE根据需要在UTF8和AL16UTF16之间转换。
请注意,使用downloadimage() {
var container = document.getElementById("htmltoimage");
html2canvas(container,{ allowTaint: true }).then(function (canvas) {
var link = document.createElement("a");
document.body.appendChild(link);
link.download = "html_image.jpg";
link.href = canvas.toDataURL();
link.target = '_blank';
link.click();
});
}
并不是很明智,因为它依赖于当前用户会话p_in_file := 'my_file_' || sysdate;
的设置。假设默认格式为NLS_DATE_FORMAT
。
例如,像MM/DD/YYYY
这样更好的用法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。