CentOS下UTF8和GBK的互轉
忘記轉自哪裡了,自己做了下測試感覺好用,記一下。
我在windows下新建Source.cpp
#include <iconv.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <string.h> #include <sys/stat.h> /* Title: Convert code between utf-8 and gbk Date:2016-02-01 Test Environment: [1]CentOS 6.5 64bits [2]libiconv 1.14 Prerequisite: [1]使用下面的命令 locale -a|grep zh_CN 檢視下面的資訊是否存在 zh_CN zh_CN.gb18030 zh_CN.gb2312 zh_CN.gbk zh_CN.utf8 */ int code_convert(char *from_charset, char *to_charset, char *inbuf, size_t inlen, char *outbuf, size_t outlen) { iconv_t cd; char **pin = &inbuf; char **pout = &outbuf; cd = iconv_open(to_charset, from_charset); if (cd == 0) return -1; memset(outbuf, 0, outlen); if (iconv(cd, pin, &inlen, pout, &outlen) == -1) return -1; iconv_close(cd); *pout = '\0'; return 0; } int u2g(char *inbuf, size_t inlen, char *outbuf, size_t outlen) { return code_convert("utf-8", "gb2312", inbuf, inlen, outbuf, outlen); } int g2u(char *inbuf, size_t inlen, char *outbuf, size_t outlen) { return code_convert("gb2312", "utf-8", inbuf, inlen, outbuf, outlen); } int main(void) { char *s = "中國"; int fd = open("test.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); char buf[10]; g2u(s, strlen(s), buf, sizeof(buf)); write(fd, buf, strlen(buf)); close(fd); fd = open("test.txt2", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); char buf2[10]; u2g(buf, strlen(buf), buf2, sizeof(buf2)); write(fd, buf2, strlen(buf2)); close(fd); return 1; }
然後,通過CMake移到CentOS上測試通過
project(GBK2UTF8) cmake_minimum_required(VERSION 2.8) SET( CMAKE_VERBOSE_MAKEFILE ON ) #For search iconv INCLUDE_DIRECTORIES(/usr/local/include) LINK_DIRECTORIES(/usr/local/lib) # aux_source_directory(. DIR_SRCS) add_executable(GBK2UTF8 ${DIR_SRCS}) TARGET_LINK_LIBRARIES(GBK2UTF8 iconv)
相關推薦
CentOS下UTF8和GBK的互轉
忘記轉自哪裡了,自己做了下測試感覺好用,記一下。 我在windows下新建Source.cpp #include <iconv.h> #include <stdlib.h> #include <stdio.h> #includ
C++ UTF8和UTF16互轉代碼
define iter 般的 != ont for efault 互轉 小端 簡介 1、這段代碼只考慮在小端序情況下的轉換(一般的機器都是的)。2、這段代碼需要C++11的支持(只是用到了u16string),如果不支持,可以添加下面代碼 typedef uin
utf8和ucs2互轉
UFT8和UCS2互轉效API使用進行拆分字數如圖 /* * 函式: * utf8_to_ucs2(utf8轉ucs2) * 引數: * utf8:utf8資料 * utf8_lenght:utf8資料長度 * ucs2:儲存ucs2資料空間
ROS下cv_bridge和opencv互轉
參看roswiki:http://wiki.ros.org/cv_bridge/Tutorials/UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages注意其中的原始碼編譯好後,在執行時,要輸入視訊流public: Im
c中實現utf8和gbk的互轉
#include <iconv.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include &
utf8 gbk 互轉
bst encoding urn sta function str public log odi public static function utf8_to_gbk($utfstr) { return iconv("utf-8", "gbk//IGNOR
Linux入門(13)——Ubuntu16.04下將圖片和pdf互轉
Ubuntu16.04下將圖片和pdf互轉 將圖片轉為PDF: convert 圖片 PDF convert pic.jpg pic.pdf 將PDF轉為圖片: convert P
UTF-8編碼下,二進位制和漢字互轉
<?php function StrToBin($str){ $arr = preg_split('/(?<!^)(?!$)/u', $str); foreach($arr as &$v){ $temp = unpa
駝峰命名法和下劃線風格的互轉
下劃線轉駝峰比較簡單,直接根據下劃線打散成陣列,每個子項首字元轉大寫,再做字串拼接即可。 駝峰轉下劃線風格,稍微複雜一些。剛開始我沒有思路,後來想到,可以遍歷字串,遇到大寫字母將其轉換成小寫,並在
idea環境下基於Gradle的Kotlin/Java的工程和程式碼互轉
建立工程目錄 java目錄程式碼示例 package net.println.ktdemo; import net.println.kedemo.User; public
wchar_t* 和char* 互轉
multi pan com nic return compose ide acp 轉化 //將單字節char*轉化為寬字節wchar_t* wchar_t* AnsiToUnicode(const char* szStr){ int nLen = MultiByte
utf8 unicode 編碼互轉
true 編碼 turn cti ram brush amp switch bsp static function utf8_to_unicode($c) { switch(strlen($c)) { case 1:
Python list 和 str 互轉
pytho str 輸出 互轉 div python post 字符串 pri 一、list轉字符串 命令:‘‘.join(list)其中,引號中是字符之間的分割符,如“,”,“;”,“\t”等等如:list = [1, 2, 3, 4, 5]‘‘.join(list)
DOM對象和jQuery互轉
scrip jquery 兩種 通過 需要 tel dom ron blog 一、jQuery對象轉成DOM對象: 兩種轉換方式將一個jQuery對象轉換成DOM對象:[index]和.get(index); (1)jQuery對象是一個數據對象,可以通過[index]的方
數組和list互轉
.cn ring 數組 code size length slist color pre 數組轉list 方法1: String[] stringArray = { "a", "b", "c", "d", "e" }; List<String> list =
數組和List 互轉
arrays 集合public class TestArrayList { public static void main(String[] args) { List<String> list = new ArrayList<String>() ; list.add("AAA"
CentOS下VFtpD和Telnet服務的配置
centos vftpd telnet 在安裝好CentOS以後,需要設置Ftp和Telnet服務文件,才能啟動Ftp和Telnet服務,可以通過遠程控制進行開啟。開通FTP有gssftp和vsftpd二種,查了查,據說vsftpd更穩定和更安全。就用vsftpd吧。一、vsftpd的安裝1.1、
centos下network和NetworkManager沖突的解決方法
network ;網卡; 重啟網卡出現報錯;查看錯誤日誌;可能是系統安裝了NetworkManager服務導致沖突了,停掉這個服務並設置服務不允許自啟動;之後再次修改配置文件後重啟網卡就不報錯了。centos下network和NetworkManager沖突的解決方法
CString和char互轉
erl HA str CP lpc In car har name CString轉char: CString m_Readcard; char ReaderName[22]; strcpy((char*)&ReaderName,(LPCTSTR)m_Readcar
C# 位元組陣列和字串 互轉
本章講述:部分資料型別,格式轉換(十六進位制字串和位元組陣列 互轉 位元組陣列和字串 互轉) public class HexConverter { #region 格式轉換 /// <summary> /// 轉換十六進位制