编码格式&&c++输出的编码

c++中文编码格式
关注源文件编码、程序内码、运行环境编码三种概念;
关注c++中char和wchar字符的默认(程序内码的)输出编码
c++窄字符的默认编码
linux查看文件编码格式及文件编码转换

工作中需要匹配写正则表达式来匹配日志,发现日志如下:
image

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(þ)。
使用vimset fileencoding查看日志文件的编码为(latin-1(ASCII)),而utf-8兼容ascii编码,因此需要用utf-8编码在windows中打开该日志。
image
用notepad++打开日志后,发现这两个字符以十六进制的方式显示为一个字符,类似于:
image
而自己创建文件,并设置为utf-8编码时,会显示出ascii字符:
image

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

posted @ 2024-12-20 10:05  SanFranciscoo  阅读(16)  评论(0)    收藏  举报