用C語言實現中文到unicode碼的轉換
由於本人喜歡用Notepad++編輯器,該編輯器的好處是小巧靈活,但是有幾個地方做的不足,但是我都能夠很好的採取相應的措施來替代,下面讓我們看看Notepad++有哪些地方的不足,進而採取怎樣的措施。
一:Notepad++不能開啟16進位制檔案,UE可以實現;
常用解決:我們常用的Beyond Compare 4(文字比較)可以輕鬆代替Notepad++不能看16進位制的問題。
二Notepad++不能實現對字母,漢字轉換成ascii碼,uniconde碼。用UE可以輕鬆代替。
常用解決方法:如下面程式碼所寫的,在linux命令下編譯生成可執行檔案,然後就可以運行了,就能實現你相應的功能轉換,我寫這個小工具是為了方便我自己用。
有些朋友就不明白了,既然UE能夠那麼好的實現功能,你為什麼不選擇用UE,所以我在這裡我得說下,這看個人喜好,我喜歡Notepad++,小巧,介面直觀,免費。
把中文轉換成uniconde碼:main.c
#include <stdio.h>
#include <string.h>#include <math.h>
#include <wchar.h>
int main()
{
wchar_t *chinese_str = L"網路人VS灰鴿子";
unsigned int *p = (wchar_t *)chinese_str;
int i;
printf("Uniocde: \n");
for (i = 0; i < wcslen(chinese_str); i++)
{
printf("0x%x ", p[i]);
}
printf(" \n");
}
編譯:gcc -finput-charset=GBK -fexec-charset=UTF-8 -o main main.c
上面的編譯命令你照做就可以了,如果你不帶上面的引數編譯會報錯,如下:
main.c:8:24: error: converting to execution character set: Invalid or incomplete multibyte or wide character
這是編碼的問題,如果你在windos上編寫程式碼儲存的格式是GBK,gcc的編碼格式預設是UTF-8。
原始檔用不同的編碼方式編寫,會導致執行結果不一樣。
man gcc , /charset /*檢視gcc的編碼格式解析編碼和執行編碼*/
-finput-charset=charset 表示原始檔的編碼方式, 預設以UTF-8來解析
-fexec-charset=charset 表示可執行程式裡的字時候以什麼編碼方式來表示,預設是UTF-8
./main
Uniocde:
0x7f51 0x7edc 0x4eba 0x56 0x53 0x7070 0x9e3d 0x5b50
!!!!上面編碼可以測試。在PC機上開啟一個記事本然後把程式寫上去,另存為不同的格式。可以自行嘗試。自行測試後更能夠加深你的理解。
實現對字元和ascii碼之間的轉換(寫的不是很精簡)
/* gets example */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void print_usage(char *file)
{
/* gets example */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void print_usage(char *file)
{
printf("%s c/a\n",file);
}
int main(int argc,char **argv)
{
char str;
int cnt;
if(argc!=2)
{
print_usage(argv[0]);
return -1;
}
if(strcmp(argv[1],"c")==0)
{
printf ("Insert your ascail: ");
scanf("%x",&cnt);
printf ("Your Ascail is: %d 0x%x '%c'\n",cnt,cnt,cnt);
}
if(strcmp(argv[1],"a")==0)
{
printf ("Insert your char: ");
scanf("%c",&str);
printf ("Your Ascail is: %d 0x%x '%c'\n",str,str,str);
}
return 0;
}
編譯: gcc main.c -o mian
相關推薦
用C語言實現中文到unicode碼的轉換
由於本人喜歡用Notepad++編輯器,該編輯器的好處是小巧靈活,但是有幾個地方做的不足,但是我都能夠很好的採取相應的措施來替代,下面讓我們看看Notepad++有哪些地方的不足,進而採取怎樣的措施。
不依賴任何系統API,用c語言實現gbk/utf8/unicode編碼轉換
轉載地址:https://blog.csdn.net/bladeandmaster88/article/details/54837338 漢字'我' Unicode編碼是0x6211 01100010 00010001 UTF8編碼是&
整型陣列處理演算法(十四)不用庫函式,用C語言實現將一整型數轉換成字串
不用庫函式,用C語言實現將一整型數轉換成字串,如:int a=123456,轉換成"123456"。 如題,要求將一整型數轉換為字串。這裡要考慮的是整型數可能是負數、正數和0。 實現如下: char
用C語言實現字母之間的大小寫轉換
題目要求 編寫一個程式,可以一直接收鍵盤字元,如果是小寫字元就輸出對應的大寫字元,如果接收的是大寫字元,就輸出對應的小寫字元,如果是數字不輸出。 程式分析 看到“接受字元”想到scanf函式,但題設中不只輸入一次而且輸入型別也不同(%c %d),那麼定義就只能
用C語言實現websocket服務器
sockaddr extend ++i set strlen ner ace == perl Websocket Echo Server Demo 背景 嵌入式設備的應用開發大都依靠C語言來完成,我去研究如何用c語言實現websocket服務器也是為了在嵌入式設備中實現一個
用C語言實現:將三個數按從大到小輸出。
temp clas 實現 ima 編程 程序 c語言實現 從大到小 code 這個題目用編程來實現非常簡單,由於我在上一篇博客中已經介紹過使用“冒泡排序”的方法。 所以我在這裏直接給出使用“冒泡排序”寫出的代碼: #include<stdio.h> int m
用C語言實現:將數組A中的內容和數組B中的內容進行交換(數組一樣大)。
image pri 之前 es2017 sys 變量 ret 只需要 題目 之前我們已經完成了對兩個變量內容進行交換的程序,這兩道題目大同小異,不過是將兩數變成了兩數組。 可能我們會想:我們是不是需要第三個數組作為中間變量進行交換操作? 答案是no,我們只需要通過一個循環體
用C語言實現窗口抖動
clu 變量 win 句柄 span nbsp idt 兩個 spa #include "stdafx.h" #include <stdio.h> #include<Windows.h> int main() { int s
圖書管理系統 [c語言實現] [全部代碼]
要求 不解釋 height next malloc 管理 stdin fflush ext 直接上代碼不解釋 #include <stdio.h> #include <stdlib.h> #include <string.h>
Linux終端程序用c語言實現改變輸出的字的顏色
光標位置 高亮 AI 藍色 屬性 用c語言實現 TE c語言 說明 顏色代碼: 格式: echo "\033[字背景顏色;字體顏色m字符串\033[0m" 例如: echo "\033[41;36m something here \033[0m" 其中41的位置代表
用c語言實現日誌功能
windows.h 用c語言實現 pause truct argc ifdef open info oid // 參考鏈接 // C語言實現寫入日誌文件 https://blog.csdn.net/sunlion81/article/details/8647028 #
用c++語言實現出四則運算的題
using div style cin 隨機函數 color 地方 switch ase 設計思路 1.利用隨機函數 隨機兩個兩位數 2.用其中一個數除以4取余函數 0 1,2,3 用switch語句分表代表加、減、乘、除。 3.輸出式子 4.利用for循環實現題的量增 5
約瑟夫環的c語言實現(代碼已實現)
def 數字 com max std urn img pri c語言實現 # include <stdio.h> #define MAXLEN 20 int front=MAXLEN-1;//隊列初始化 int rear=MAXLEN-1; enqu
用c語言實現單鏈表的逆序輸出
<span style="font-family: Arial, Helvetica, sans-serif;">可以用遞迴,如果沒到連結串列尾,則遞迴查詢,否則輸出當前值。下面只是演算法表示,不能直接放到程式裡編譯執行。</span><span style="fo
atoi函式的用法及用C語言實現ato
庫函式原型: #inclue <stdlib.h> int atoi(const char *nptr); 用法:將字串裡的數字字元轉化為整形數。返回整形值。 注意:轉化時跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時('/0')才結束
用C語言實現最小二乘法演算法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
用C語言實現字串倒序
程式: #include <stdio.h> #include <stdlib.h> #include <string.h> int fun(char *w) { char t, *s1,*s2; int n = strlen(
用c語言實現一個簡單的通訊錄
通訊錄的c語言實現原始碼 簡單通訊錄的實現還是包括三個原始檔,test.c(實現通訊錄主邏輯),txl.c(實現用到的各個函式),txl.h(存放txl中用到的各種標頭檔案與宣告)。 txl.h #ifndef __TXL_H__//**txl.h** #defi
Problem Description——用c語言實現素數的判定
Problem Description 對於表示式n^2+n+41,當n在(x,y)範圍內取整數值時(包括x,y)(-39<=x<y<=50),判定該表示式的值是否都為素數。 Input 輸入資料有多組,每組佔一行,由兩個整數x,y組成,當x=0,y=0時,表示輸入結束,該
用c語言實現列印日曆
只要輸入年份就能打印出相應的日曆 #ifndef MAIN_H #define MAIN_H #include "stdio.h" #include "math.h" #include "stdlib.h" //獲取某一個月的最大天數 int monthday(int, int);