检查并删除文件中的隐藏字符
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" 概念... {:-(
那是要更改表中已有的数据。如果可以的话,最好在数据传入时对其进行修复 - 使用类似的转换。
我有一个正在处理的文件,它不断给我错误。经过一番检查,我发现它隐藏了一些特殊字符。
我刚刚手动找到了隐藏的字符并做了一个简单的替换
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" 概念... {:-(
那是要更改表中已有的数据。如果可以的话,最好在数据传入时对其进行修复 - 使用类似的转换。