检查并删除文件中的隐藏字符

Check and delete hidden characters in file

我有一个正在处理的文件,它不断给我错误。经过一番检查,我发现它隐藏了一些特殊字符。

我刚刚手动找到了隐藏的字符并做了一个简单的替换

REPLACE( String,'', '') 

我怎样才能防止这种情况在未来发生?

我试图制作一个 table 来存储这些隐藏的 ascii 字符,这些字符在 125-255 范围内,但数据库不会相应地存储它们。 例如 chr(168)ascii 168.

不同
select chr('168'), 
       convert(chr('168'), 
       'US7ASCII', 
       'WE8ISO8859P1') 
from dual;

我还能尝试什么?

易于编写,但执行起来不是最快的 - 使用 regexp_replace:

update table_name
set column_name = 
             regexp_replace(column_name, '[' || chr(125) || '-' || chr(255) || ']', '')
;

效率更高,但编写和维护起来很麻烦(尽管您可以编写一些代码来生成代码,以节省一些输入):

...
set column_name = 
           translate(column_name, '~' || chr(125) || chr(126) || ..... || chr(255), '~')
;

是的,translate() 你必须把它们全部拼出来,没有 "range" 概念... {:-(

那是要更改表中已有的数据。如果可以的话,最好在数据传入时对其进行修复 - 使用类似的转换。