c++日志文件中文显示乱码的问题及解决办法
生活随笔
收集整理的這篇文章主要介紹了
c++日志文件中文显示乱码的问题及解决办法
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
近段時(shí)間在做戰(zhàn)斗系統(tǒng),昨天觀察日志時(shí)發(fā)現(xiàn)中文顯示亂碼,而且奇怪的是有些中文日志是正常的,有些中文日志亂碼
就是下面這種表現(xiàn)
Debug - Thu Oct 24 20:42:35 2019 : systems/ability/AbilityPlugin.cpp_104:AbilityPlugin::SetAbility(),戰(zhàn)斗房間=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的中文顯示就是亂碼
相信大家的第一反應(yīng)就是這兩個(gè)cpp文件的編碼格式不同
我也是修改VScode中文件的編碼格式,但是非常不幸的是編譯執(zhí)行后還是亂碼
(后來才知道,我只是修改了VScode的解析方式,沒修改cpp文件本身的編碼方式,巨坑啊)
下面說正規(guī)的解決辦法:
1. 用vim 打開代碼文件
2. 查看文件的編碼方式,即命令 set fileencoding 應(yīng)該不是utf-8的
3. 設(shè)置文件的編碼方式,即命令 set fileencoding=utf-8
4. 保存文件
5. 重新編譯后運(yùn)行,日志文件打開時(shí)也以u(píng)tf-8方式進(jìn)行解析,這個(gè)時(shí)候就都能正常顯示了
如下圖:
Debug - Thu Oct 24 21:04:26 2019 : systems/ability/AbilityPlugin.cpp_104:AbilityPlugin::SetAbility(),戰(zhàn)斗房間=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() 結(jié)束, 戰(zhàn)斗房間=1017, 施法者ID=1017, 角色I(xiàn)D=1, 施法目標(biāo)ID=1016, 角色I(xiàn)D=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:戰(zhàn)斗房間=1017, 施法者ID=1016, 角色I(xiàn)D=1,施法目標(biāo)ID=1017, 角色I(xiàn)D=1, 技能ID=0, 當(dāng)前時(shí)間=1571922266013注意:源碼文件其他方式的編碼也是可以的,但是查看日志的時(shí)候也需要對應(yīng)的編碼方式才行,為了統(tǒng)一,我們用utf-8
?
?
總結(jié)
以上是生活随笔為你收集整理的c++日志文件中文显示乱码的问题及解决办法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Centos: 解决系统编码 local
- 下一篇: 获取文件大小