编码格式&&c++输出的编码
c++中文编码格式
关注源文件编码、程序内码、运行环境编码三种概念;
关注c++中char和wchar字符的默认(程序内码的)输出编码
c++窄字符的默认编码
linux查看文件编码格式及文件编码转换
工作中需要匹配写正则表达式来匹配日志,发现日志如下:

20241220 193329.583|ddsserver_0|sqlId=7wumd4x9jtsjx00420038|type=DDS|dbId=-1|desc=|cost=0.46ms|ddsCost=0.46ms|dbCost=0.00ms|clientIP="7.212.42.38"|sql="select * from v$ddl"ÿ|plan=
-----------------------------------------------------------------------------------------------------------------------------------------------------
|Id |Operation |Name |Time |
-----------------------------------------------------------------------------------------------------------------------------------------------------
|0 |SELECT STATEMENT | |0.46ms |
|1 |PROJECT(SINGLE-RDBCURSORS) | |0.00ms |
|2 | | |0.00ms |
þ|traceId=|tracecode=|callcode=
需要注意在sql语句字段最后和plan字段最后分别有两个ascii字符,是日志中打印的分隔符,ascii码分别为0xFF(ÿ)以及0xFE(þ)。
使用vim的set fileencoding查看日志文件的编码为(latin-1(ASCII)),而utf-8兼容ascii编码,因此需要用utf-8编码在windows中打开该日志。

用notepad++打开日志后,发现这两个字符以十六进制的方式显示为一个字符,类似于:

而自己创建文件,并设置为utf-8编码时,会显示出ascii字符:

在使用正则表达式匹配时,使用\xFE或者\u00FE来匹配ascii字符(在linux中使用vim的进行搜索时,要使用[\xFE]或者[\u00FE]才能匹配到。

浙公网安备 33010602011771号