目前(2020 年)開發WINDOWS程式,用UNICODE還是多位元組更實際?

時間 2021-05-11 13:43:02

1樓:昊陽

由於在學校學習時,都是用的多位元組函式,很多做專案也是用多位元組函式,於是習慣了多位元組的。

用unicode需要重新審視一遍各種函式的版本,工作量大。民營企業一般軟體開發時間都比較緊,自然是什麼方便用什麼,如無必須,勿增實體。我從事影象識別將近10年,一直用多位元組版本,各種函式呼叫很方便,操作底層硬體和演算法也方便,用unicode反而不方便。

2樓:

用qt,不用糾結這個問題。而且學習成本低,可移植性強。

如果不用qt的話,還是建議用unicode,因為windows下多位元組對應的是ansi編碼,而很多lib的編碼是utf-8,編碼該轉的還是要轉的。

3樓:Glavo

推薦記憶體中做處理的時候一律用 UTF-16(就是 windows 所謂的 Unicode),io 的時候看情況轉編碼。win32 這套就不用說了,實際都是 UTF-16,A系的方法也會在內部轉換,而想要跨平台的時候,常用的 icu 的 UnicodeString 和 Qt 的 QString 用的也都是 UTF-16,問題不大,就是記著用 char16_t 換掉 wchar。

4樓:

我的答案可能會比較引戰一點。。。

到現在還覺得VC6.0是最吼的那群人, 會告訴你用多位元組編碼(ASCII)是最吼的。他們覺得VC6.0最"穩定", 編譯後的體積"最小"

如果早早接觸到跨平台(Win, Linux), 也有不少有"學習障礙症"的同學, 堅持各種編碼混轉, 而不是統一編碼。

我個人的回答是, 如果題主比較專注在Win下的開發, 建議用Unicode。 如果要轉ASCII或者UTF-8之類的編碼, 再轉一下就好了。

如果是跨平台的, 建議用UTF8.

除非你覺得你的軟體永遠不會出現亂碼(就是純英文,使用者看不懂關我P事)。 那就直接上ASCII碼。

5樓:0xCCCCCCCC

編碼這個鍋,C++ 和 Windows 一半一半。

首先,Windows 上說的 UNICODE 編碼其實是 UTF-16。所謂的 UNICODE 快是因為你呼叫 A 版本(MBCS)的 API 內部也會轉編碼之後呼叫 W 的。

無責任猜測你說的「一些書」大概指的是 Windows 核心程式設計這種。

如果你寫的程式不考慮移植性,或者單純的個人隨便寫寫的玩票,那就用 wchar_t, std::wstring,API都用 -W 版本,crt 的函式也類似。

不過現在這個年代一般正經的程式都不會這麼做,這裡說一下比較正經的,比如 chromium 這樣的的專案的做法。

內部邏輯都是用 char & std::string,並且假定編碼為 UTF-8 (std::string 不假定編碼,就是位元組流)

和 Windows API 互動部分如果有需要就轉換成 UTF-16。

API 優先選擇並顯式使用 W 版本的 API,即直接使用類似 CreateProcessW 而不是 CreateProcess 這個 macro.

這裡引入乙個 stirng16 型別,在 Windows 下就是 std::wstring 的別名;其他平台是 uint16_t 及其特化的的別名。

見:https://

chromium.googlesource.com

/chromium/src/+/refs/heads/master/base/strings/string16.h

I/O 的互動除非有特殊要求,否則堅持使用 UTF-8 編碼

因為單純的 ASCII 部分和 UTF-8 是相容的,所以大部分情況下字串處理都不需要額外考慮。如果需要額外考慮的場景,例如介面輸出的 layout 啥的,考慮用 ICU 這樣的 3rd party lib

對於編碼轉換,這裡可以參考一下;或者之前用過 https://

不過現在看起來直接是 deprecated in C++ 17...

另,http://

utf8everywhere.org/

這篇 post 可以通讀一下

最後:千萬別在嚴肅的程式上使用 MBCS。

另,http://

utf8everywhere.org/

這篇 post 可以通讀一下

6樓:Belleve

純 win32 程式 —— 用 WCHAR(注意這個大寫),然後忘記 C++ 有 char 這回事

跨平台程式 —— 內部用 char(utf-8),調 WINAPI/CRT 之前臨時轉換

檔案/網路 IO 的地方…看你心情要不要處理遺留編碼了

7樓:壺中有酒

開發當中經常會遇到這種問題,你可以找乙個開源的轉換庫來改改,形成乙個自己的轉換庫。做乙個簡易的封裝,然後用的時候呼叫同乙個入口就可以了,這樣會很方便。

2023年應該如何學習前端開發?

晴空萬里girl 對於題主所說的2020的我學習前端開發,如何才能做到高薪就業呢?可以看我回答過類似的問題 2020年,web前端還好找工作嗎?晴空萬里girl web前端達到什麼水平,才能找到工作 可以分為九個階段 首先很多都回答的很好,內容也很詳細。我寫個簡潔易懂的吧。2020年之前,前端技術飛...

2023年如何安裝配置Haskell開發環境?

安裝purescript,安裝對應vscode外掛程式,然後把你的haskell書5塊錢賣給樓下打oi的高二jk跟她講這是全民語言,要麼燒了也行。purescript和haskell差異很大,但就小小白入門而言沒有差別。 Windows使用者找中科大映象站,裡面找stack的installer安裝....

目前用華為手機,window系統電腦,現在糾結是買華為平板還是買IPAD?

Frost 不考慮預算情況下,就無腦最新版iPad pro就好。或者如果你需要用手寫筆進行繪畫和寫字,依舊優先iPad。iPad對手寫筆的打磨是安卓難以比擬的。但是如果你想要相對開放的系統,並且希望體驗華為生態,對手寫板的要求僅限於簡單的批註的話,那麼就matepad pro 或者如果你預算比較充足...