Linux C++ 字符編碼轉換 GBK與UTF8互轉

  1. Linux 下使用 iconv 命令可以轉換文件的編碼 iconv -f GBK -t UTF-8 input_file -o output_file
  2. C++ 代碼 使用 iconv 函數

iconv 函數簽名: size_t iconv(iconv_t cd,、
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
需要注意的是, iconv 函數的 inbuf 參數以及 outbuf 參數會被修改,內部的實現是使用類似
(*p)++ = xxx 的形式操作這兩個指針,inbytesleft 會被修改為輸入字符串剩余多少沒有處理,
outbytesleft 會被修改為 outbuf 還有多少字節沒有使用。iconv 返回 (size_t)-1 表示失
敗,返回0表示成功,返回大于0表示出現了不可逆轉的字符處理。

static std::string CharConv(const std::string& str, const char* fromcode, const char* tocode)
{iconv_t cd = iconv_open(tocode, fromcode);if (cd == (iconv_t)-1) {printf("iconv_open failed, errno: %d\n", errno);return str;}const size_t len = str.length();const size_t outbuflen = len * 2;char inbuf[len] = {0};char outbuf[outbuflen] = {0};memcpy(inbuf, str.data(), len);char *pin = inbuf;char *pout = outbuf;size_t inlen = len;size_t outbufleft = outbuflen;size_t ret = iconv(cd, &pin, &inlen, &pout, &outbufleft);if (ret == (size_t)-1) {printf("iconv failed. errno: %d\n", errno);iconv_close(cd);return str;}iconv_close(cd);return string(outbuf, outbuflen - outbufleft);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696614.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696614.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696614.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python基礎20 面向對象(3)多態、封裝、反射

文章目錄 一、多態1、什么是多態2、多態小實驗 二、封裝1、什么是封裝2、內部屬性的約定 三、反射1、什么是反射2、四個實現自省的函數(1)hasattr(object,name)(2)getattr(object,name,defaultNone)(3)seta…

神秘人暗訪:行政窗口為什么要開展神秘顧客調研

在競爭日益激烈的服務市場中,行政窗口作為公共服務的直接提供者,其服務質量的好壞直接關系到政府的形象和公眾對政府的信任度。為了更好地滿足市民的需求,提升服務質量,開展神秘顧客調查顯得尤為重要。神秘顧客調查的必要性包括以…

內網穿透的應用-如何本地部署Elasticsearch搜索分析引擎實現并發布公網遠程訪問

文章目錄 系統環境1. Windows 安裝Elasticsearch2. 本地訪問Elasticsearch3. Windows 安裝 Cpolar4. 創建Elasticsearch公網訪問地址5. 遠程訪問Elasticsearch6. 設置固定二級子域名 Elasticsearch是一個基于Lucene庫的分布式搜索和分析引擎,它提供了一個分布式、多…

探索Flask框架:打造優雅而強大的Web應用

在當今互聯網時代,Web應用的需求日益增長,而作為開發者,我們需要一個簡潔明快、靈活可擴展的框架來滿足這些需求。Flask框架作為一個Python微型框架,在其簡潔的設計理念和豐富的擴展生態系統之間找到了完美的平衡,為我…

洛谷--二分(Java實現)

洛谷 B3627 立方根 題目描述 給定正整數 n,求 √n?。答案向下取整。 輸入格式 僅一行,一個正整數 n。 輸出格式 僅一行,一個正整數,表示√n。向下取整輸出。 輸入輸出樣例 輸入 #1 27 輸出 #1 3 輸入 #2 100000 輸…

ORACLE之 decode函數

語法: DECODE(expression, search1, result1, search2, result2, ..., default_result) 其中,expression是要進行比較的表達式,search1, search2等是可能的值,result1, result2等是對應的結果。如果expression等于search1&#x…

Java類的成員、繼承、多態

當談論Java類的成員、繼承和多態時,我們談論的是面向對象編程的基本概念。讓我逐一介紹: 1. **成員**: - **字段(Field)**:也稱為屬性或變量,用于存儲對象的狀態信息。 - **方法&#xf…

防御保護第六次作業

需求: 8,分公司內部的客戶端可以通過域名訪問到內部的服務器 9,假設內網用戶需要通過外網的web服務器和pop3郵件服務器下載文件和郵件,內網的FTP服務器也需要接受外網用戶上傳的文件。針對該場景進行防病毒的防護。 10,我們需要針…

C++模板從入門到入土

1. 泛型編程 如果我們需要實現一個不同類型的交換函數,如果是學的C語言,你要交換哪些類型,不同的類型就需要重新寫一個來實現,所以這是很麻煩的,雖然可以cv一下,有了模板就可以減輕負擔。 下面寫一個適…

日常leetcode代碼思路總結(持續更新)

日常leetcode代碼思路總結(持續更新) 難易leecode題號題目描述思路簡單121. 買賣股票的最佳時機只準一次買賣0表示持有,1表示不持有;dp[0][i] max(dp[0][i-1], -prices[i]);dp[1][i] max(dp[1][i-1], dp[0][i] pric…

Openwrt刪除內核patch

環境說明 ubuntu-18.04 openwrt-21.02 安裝quilt sudo apt install quilt quilt指令說明 Usage: quilt [--trace[=verbose]] [--quiltrc=XX] command [-h] ...quilt --version Commands are:add fold mail refresh snapshotannotate fork new rem…

基于springboot+vue的中小企業設備管理系統(前后端分離)

博主主頁:貓頭鷹源碼 博主簡介:Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰,歡迎高校老師\講師\同行交流合作 ?主要內容:畢業設計(Javaweb項目|小程序|Pyt…

H 橋逆變方式介紹(雙極性)

單極性控制和雙極性控制是說IGBT四個管子的控制 前面所說的單極性控制是其中一個管子開通、關閉另外一個管子持續開通 而雙極性是四個管子中的兩個管子同時導通,同時關斷。彼此交替變化 所以當方波出現低電平時,是一對管子同時導通,出現高電…

2.21 Qt day2 菜單欄/工具欄/狀態欄/浮動窗口、UI界面、信號與槽

思維導圖 使用手動連接,將登錄框中的取消按鈕使用qt4版本的連接到自定義的槽函數中,在自定義的槽函數中調用關閉函數 將登錄按鈕使用qt5版本的連接到自定義的槽函數中,在槽函數中判斷ui界面上輸入的賬號是否為"admin",…

成像光譜遙感技術中的AI革命:ChatGPT應用指南

“成像光譜遙感技術中的人工智能革命:ChatGPT應用指南”,這是一門旨在改變您使用人工智能處理遙感數據的方式。將最新的人工智能技術與實際的遙感應用相結合,提供不僅是理論上的,而且是適用和可靠的工具和方法。無論你是經驗豐富的…

golang實現延遲隊列(delay queue)

golang實現延遲隊列 1 延遲隊列:郵件提醒、訂單自動取消 延遲隊列:處理需要在未來某個特定時間執行的任務。這些任務被添加到隊列中,并且指定了一個執行時間,只有達到指定的時間點時才能從隊列中取出并執行。 應用場景&#xff1…

智慧驛站_智慧文旅驛站_輕松的驛站智慧公廁_5G智慧公廁驛站_5G模塊化智慧公廁

多功能城市智慧驛站是在智慧城市建設背景下,所涌現的一種創新型社會配套設施。其中,智慧公廁作為城市智慧驛站的重要功能基礎,具備社會配套不可缺少的特點,所以在應用場景上,擁有廣泛的需求和要求。那么,城…

高企認定的官方費用

高新技術企業認定并沒有直接的“官費”,但是在申請高新技術企業認定過程中,企業可能會涉及到一些與政府部門相關的費用,主要包括以下幾種情況: 1.知識產權相關費用:?申請專利、軟件著作權等知識產權時需要向國家知識…

#12解決request中getReader()和getInputStream()只能調用一次的問題

目錄 1、背景 2、解決方案 2.1、自定義HttpServletRequestWrapper 2.2、JsonRequestHeaderParamsHelper 2.3、HttpServletRequestReplacedFilter 2.4、使用 1、背景 當前系統Content-Type為application/json,參數接收方式采用RequestBody和RequestParam&#…

平時積累的FPGA知識點(10)

平時在FPGA群聊等積累的FPGA知識點,第10期: 41 ZYNQ系列芯片的PL中使用PS端送過來的時鐘,這些時鐘名字是自動生成的嗎? 解釋:是的。PS端設置的是ps_clk,用report_clocks查出來的時鐘名變成了clk_fpga_0&a…