vs2015:/utf-8選項解決UTF-8 without BOM 原始碼中文輸出亂碼問題
本來我已經參考網上關於C++中文輸出亂碼的文章解決了,如下面的程式碼輸出前呼叫wcout.imbue
設定locale
,就可以正常輸出中文了。
std::wcout.imbue(std::locale(std::locale(), "", LC_CTYPE));
std::wcout << L"江清月近人" << std::endl;
但是同樣的方法換在另一個程式中還是輸出亂碼。反覆查詢原因,最後發現是兩個原始碼的編碼格式不同。雖然都是UTF-8,但是能正確輸出中文的原始碼檔案是帶BOM頭的,另一個是不帶BOM的。參考這個篇文章《MSVC中C++ UTF8中文編碼處理探究》
/utf-8 編譯選項
MSVC對於UTF-8 without BOM格式支援不好,這個問題由來已久,在VS2015之前的版本一直存在。
在VS2015版本(Visual Studio 2015 Update 2),增加一個編譯選項/utf-8
,該編譯選項的作用就是將原始碼字符集和執行檔案字符集指定為UTF-8。增加該編譯選項後,再重新編譯執行,程式正確輸出中文,問題解決。
#pragma execution_character_set(“utf-8”)
其實網上可以找到不少文章提到還有另一個解決辦法, 就是在原始碼中插入預處理指令#pragma execution_character_set("utf-8")
#if defined(_MSC_VER) && (_MSC_VER >= 1900)
# pragma execution_character_set("utf-8")
#endif
這是關於該指令的官網說明:《execution_character_set》。
根據這個說明,這個指令似乎是VS2015才有的(我的電腦沒有別的版本的MSVC所以沒辦法驗證VS2015之前的版本是否支援這個指令),但是在Visual Studio 2015 Update 2
Visual Studio 2015 Update 3
,對這個指令確實無效。
Visual Studio 儲存UTF-8 without BOM
為什麼要用UTF-8 without BOM來儲存原始碼?
主要的原因是linux下編譯器不支援UTF-8 with BOM的原始碼編譯,其實如果你的專案沒有跨平臺編譯的要求,並不一定要將原始碼儲存為UTF-8 without BOM格式。
如果你希望在Visual Studio中將原始碼儲存為UTF-8 without BOM格式,如下設定一下高階儲存選項
就可以了。
預設是Unicode(UTF-8 帶簽名)-內碼表65001
,這裡要修改為Unicode(UTF-8 無簽名)-內碼表65001
參考文章
相關推薦
vs2015:/utf-8選項解決UTF-8 without BOM 原始碼中文輸出亂碼問題
本來我已經參考網上關於C++中文輸出亂碼的文章解決了,如下面的程式碼輸出前呼叫wcout.imbue設定locale,就可以正常輸出中文了。 std::wcout.imbue(std::locale(std::locale(), "", LC_CTYPE)
Jenkins控制臺中文輸出亂碼解決方法
http 在服務器 管理 中文 服務器環境 電腦 image tomcat pps 1、 設置jenkins所在服務器環境變量,右鍵我的電腦→屬性→高級系統設置→環境變量,添加JAVA_TOOL_OPTIONS 2、修改Tomcat配置,進入apache_tomcat
javaweb專案中解決url中傳過來的中文是亂碼
從jsp頁面中傳遞到servlet中的值經常出現亂碼問題 問題描述 1:jsp頁面設定了編碼格式為utf-8 2:servlet頁面也設定了utf-8 3:工作空間也設定了utf-8 4:但是從jsp頁面傳遞到servlet頁面的值還是出現中文亂碼 ps:傳遞的值
python程式設計中中文輸出亂碼UnicodeEncodeError: 'ascii' codec can't encode character解決方案
問題是這樣的 我用的jupyter,下圖是我的原始碼我知道由於未把ASCII轉為utf8,但是我按照網上的程式碼修改後直接沒有output了 我加上 import sys reload(sys) sys.setdefaultencoding('utf-8')
php 解決 escape 編碼後 js 解碼中午輸出亂碼的問題
我們通過 php 進行 escape 編碼 加密我們的文字後 通過js 的unescape 進行解碼,然而 中文出現亂碼,主要是因為 現在網路上所在流傳的 PHP escape 編碼方法存在 一些問題 ,下面的方法是我個人修改後的 ,提供
解決Navicat 執行.sql檔案時中文出現亂碼 不能顯示中文
本人第一使用navicat時,直接執行.sql時,中文出現了亂碼,如圖所示:後來通過查資料才明白,是因為自己執行.sql檔案步驟有問題,沒有設定編碼格式,所以下面介紹正確的編碼步驟:第一步:想執行.sql檔案,必須選中資料庫才行,因為.sql執行後生成的表是存在於指定資料庫內
【IDEA工具設定】解決控制檯中文輸出亂碼問題
---------------------------------------------------------------------------------親測有效,完美的解決了我的問題。之前遇到兩種錯誤。一、控制檯沒有亂碼,但編輯區的中文無法識別是什麼編碼,也是醉了。
Java控制檯中輸入中文輸出亂碼的解決辦法
在學習Java IO的輸入輸出流的時候遇到了一個問題,就是無論用BufferedReader還是Scanner輸入中文,在控制檯輸出的時候都會出現亂碼的情況,而且不管在Window-Preferences中怎麼改變編碼方式都無效(包括UTF-8和GBK)。 import
解決 Javascript 中 atob 方法解碼中文字元亂碼問題
function utf8_to_b64(str) { return window.btoa(unescape(enco
解決UTF-8方法歸納
char ren logs ping utf log Coding ron web 1:通過spring配置過濾器解決 <!-- 配置Spring提供的字符編碼過濾器 --> <filter> <filte
TensorFlow學習筆記(UTF-8 問題解決 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte)
show 學習 github red star ims fas can pri 我使用VS2013 Python3.5 TensorFlow 1.3 的開發環境 UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte
解決EditPlus在設置了UTF-8之後,編寫的HTML頁面仍出現漢字亂碼問題
content size 方式 解釋 RM char .net 一行 好的 解決EditPlus在設置了UTF-8之後。編寫的HTML頁面仍出現漢字亂碼問題 ? 相
關於Encode in UTF-8 without BOM
什麽 nic 代碼 網頁代碼 使用 python 文件頭部 環境 解釋 定義BOM(Byte Order Mark),字節順序標記,出現在文本文件頭部,Unicode編碼標準中用於標識文件是采用哪種格式的編碼。它的編碼是FEFF。 說明 在 UTF-8 文件中放置 BOM
UTF-8 without BOM
UTF-8編碼的檔案可以分為without BOM和BOM兩種格式。 何謂BOM? "EF BB BF" 這三個位元組就叫BOM,BOM的全稱叫做"Byte Order Mark". 在UTF-8檔案中常用BOM來表明這個檔案是UTF-8檔案, 而BOM的本意是在UTF-16中用來表示高低位元組序列
UTF-8與UTF-8 without BOM
UTF-8編碼的檔案可以分為without BOM和BOM兩種格式。 何謂BOM? “EF BB BF” 這三個位元組就叫BOM,BOM的全稱叫做"Byte Order Mark". 在UTF-8檔案中常用BOM來表明這個檔案是UTF-8檔案, 而BOM的本意是
mysql資料庫插入中文以及亂碼問題解決(統一設定為utf-8)格式
1、編輯MySql的配置檔案 MySql的配置檔案Windows下一般在系統目錄下或者在MySql的安裝目錄下名字叫my.ini。像我的就在D:\Program Files (x86)\MySQL\M
idea軟體編碼已經設定好了為utf-8,但是svn中down下來的檔案格式本身不是utf-8的,此時開啟後會出現中文亂碼解決方法
我是個idea的忠實使用者,新公司的專案都是用eclipse做的,通過svn拉下程式碼後發現,註釋的內容裡,中文內容都是亂碼。問過專案負責人,說可能是GBK編碼。 但是,我通過idea的setting設定了編碼,試了5種編碼都沒用,中文內容還是亂碼。最後還是自己試出來解決方案。 詳細的原因請參考
Httprunner 安裝pipenv insatll --dev出現ValueError: unknown locale: UTF-8的解決方案
1、開啟terminal(終端)2、cd ~ ( 進入當前使用者的home目錄)3、open .bash_profile (開啟.bash_profile檔案,如果檔案不存在就 建立檔案:touch .bash_profile 編輯檔案:open -e bash_prof
Python學習筆記:Convert UTF-8 with BOM to UTF-8 without BOM in Python
前言 windows對於utf-8編碼的檔案自帶BOM,但是其他系統utf-8編碼預設不帶BOM。 這就造成在某些情況下字元解碼會出現問題,比如python自帶的json在讀取在window下編碼得來的utf-8檔案時,會報如下錯誤: V
ubuntu 14.04 輸入過程中出現[Invalid UTF-8] 的解決
最近電腦太慢,於是弄了固態硬碟。然後開始安裝系統,正好一直想用14.04的系統。不過裝新的系統總是有讓人頭疼的地方,各種環境,配置都得從頭再來。 一開始就碰到一個頭疼的問題就是輸入法。首先是不知道怎麼新增中文。鼓搗了半天。記錄一下,免得以後忘記了。