c++日志文件中文显示乱码的问题及解决办法

近段时间在做战斗系统,昨天观察日志时发现中文显示乱码,而且奇怪的是有些中文日志是正常的,有些中文日志乱码

就是下面这种表现

Debug - Thu Oct 24 20:42:35 2019 : systems/ability/AbilityPlugin.cpp_104:AbilityPlugin::SetAbility(),战斗房间=1012,playerID=1012,roleID=1,abilityName=cur_hp,abilityValue=88
Debug - Thu Oct 24 20:42:35 2019 : systems/action/actionplugin.cpp_238:ActionPlugin::do_cast_spell() 缁撴潫, 鎴块棿ID=1012, 驴驴驴ID=1013, 驴驴ID=1, 驴驴驴驴ID=1012, 驴驴ID=1, 驴驴ID=1, 
Debug - Thu Oct 24 20:42:35 2019 : game_engine.cpp_169:[CGameEngine]::SendToClient sockindex=1 SendToClient cmd=118  size=35
Debug - Thu Oct 24 20:42:35 2019 : systems/scene/battleroom.cpp_94:[CBattleRoom] OnRoomRun userid=1012 lTime=1571920955508 m_tickFlag=1571920956008 m_tickIndex=50.
Debug - Thu Oct 24 20:42:35 2019 : systems/ai/logic.cpp_45:鎴樻枟鎴块棿=1013, 鏂芥硶鑰匢D=1012, 瑙掕壊ID=1锛屾柦娉曠洰鏍嘔D=1013, 瑙掕壊ID=1, 鎶€鑳絀D=1, 褰撳墠鏃堕棿=1571920955509

可以看到AbilityPlugin.cpp的中文显示是正常的,但actionplugin.cpp的中文显示就是乱码

相信大家的第一反应就是这两个cpp文件的编码格式不同

我也是修改VScode中文件的编码格式,但是非常不幸的是编译执行后还是乱码

后来才知道,我只是修改了VScode的解析方式,没修改cpp文件本身的编码方式,巨坑啊

下面说正规的解决办法

1. 用vim 打开代码文件

2. 查看文件的编码方式,即命令 set fileencoding 应该不是utf-8的

3. 设置文件的编码方式,即命令 set fileencoding=utf-8

4. 保存文件

5. 重新编译后运行,日志文件打开时也以utf-8方式进行解析,这个时候就都能正常显示了

如下图:

Debug - Thu Oct 24 21:04:26 2019 : systems/ability/AbilityPlugin.cpp_104:AbilityPlugin::SetAbility(),战斗房间=1017,playerID=1016,roleID=1,abilityName=cur_hp,abilityValue=78
Debug - Thu Oct 24 21:04:26 2019 : systems/action/actionplugin.cpp_239:ActionPlugin::do_cast_spell() 结束, 战斗房间=1017, 施法者ID=1017, 角色ID=1, 施法目标ID=1016, 角色ID=1, 技能ID=1, 
Debug - Thu Oct 24 21:04:26 2019 : game_engine.cpp_169:[CGameEngine]::SendToClient sockindex=2 SendToClient cmd=118  size=35
Debug - Thu Oct 24 21:04:26 2019 : systems/ai/logic.cpp_45:战斗房间=1017, 施法者ID=1016, 角色ID=1,施法目标ID=1017, 角色ID=1, 技能ID=0, 当前时间=1571922266013

注意:源码文件其他方式的编码也是可以的,但是查看日志的时候也需要对应的编码方式才行,为了统一,我们用utf-8

发布了105 篇原创文章 · 获赞 58 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/yzf279533105/article/details/102737441