c++日志文件中文显示乱码的问题及解决办法
生活随笔
收集整理的這篇文章主要介紹了
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
?
?
總結
以上是生活随笔為你收集整理的c++日志文件中文显示乱码的问题及解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos: 解决系统编码 local
- 下一篇: s3c2440移植MQTT