作者qscgy4 (Unknow)
看板C_and_CPP
標題[問題] UTF-8 to ANSI
時間Tue Jun 23 00:24:45 2015
開發平台(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