看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC10, Windows 7 問題(Question): 我用C++讀取網頁的內容存成txt檔後要做文字分析, 但內容有中文字,要做一些文字比對(用C++的fstream存檔後是UTF-8格式)。 爬了很多 wchar_t 之類的用法,發現都太麻煩了... 後來我發現一件有趣的事,同樣的內容另存成ANSI的格式下, char可以正常運作,顯示中文、比對中文都沒問題, 因此就想說是不是我存成UTF-8後, 可以用什麼方法靠程式把他轉為ANSI格式存檔後,在開啟來讀取 ? 請各位大大教我這個菜逼巴,怎麼把UTF-8轉為ANSI格式,感恩。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.48.157 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1434990287.A.2CA.html
qscgy4: 在網路找到轉換的方法,以解決 06/23 00:44
TeaEEE: 如果是自己使用還好,若是在別人未使用中文OS系統上就GG了 06/23 11:50
Killercat: utf8怎麼轉ANSI @@? 你是想把UTF-8的標點轉ANSI嗎 06/23 12:09
Killercat: 如果你只是要skip掉UTF-8的字的話 你只要碰到byte的第 06/23 12:12
Killercat: 一個bit是1的 就看裡面幾個bit是1 跳掉後面幾個byte即 06/23 12:12
Killercat: 可 比方說看到1110xxxx 就知道要跳掉自己跟後面兩個byt 06/23 12:13
Killercat: e,應該是不用注意endian問題啦.... 06/23 12:13
Killercat: 或者單純看到byte第一個bit是1就跳掉也是可以的 06/23 12:14
Killercat: if(0x10000000 & targetChar) skipToNext(); 06/23 12:15
LPH66: 他的"ANSI"應該是本地編碼 (就那個記事本的選項) 06/23 13:29
LPH66: 這樣的話 Windows 直接叫 WinAPI 比較直接 06/23 13:30
LPH66: 先用 MultiByteToWideChar 轉成 wchar_t[] (UTF-16) 後 06/23 13:30
LPH66: 再 WideCharToMultiByte 轉成本地編碼即可 06/23 13:31