C 中文字元處理

2021-10-07 04:48:24 字數 3595 閱讀 2155

解決方案:

構造三層邏輯結構:輸入層、邏輯處理層、輸出層。

– 輸入層接收char輸入,並將其轉換為wchar.

– 邏輯處理層在 wchar* 或 wstring 的基礎上進行字串操作,此時操作最小單位為中文字元,不會再有亂碼。

– 輸出層將wchar的結果再次轉換為char ,返回給外部。

這樣,對外部來說,仍然是輸入char*, 輸出char*, 但在這個過程中不再有分割漢字的操作或亂碼。

#include

#include

using

namespace std;

wchar_t

*mbcs2unicode

(wchar_t

* buff,

const

char

* str)

else

wp++

; p++;}

*wp =

0x0000

;return buff;

}char

*unicode2mbcs

(char

* buff,

const

wchar_t

* str)

else

wp++;}

*p =

0x00

;return buff;

}wstring str2wstr

(string str)

intwputs

(const

wchar_t

* wstr)

;int

wputs

(wstring wstr)

intwputs

(const

wchar_t

* wstr)

string wstr2str

(wstring wstr)

.h

#pragma once  

#include

"stdafx.h"

#include

"windows.h"

#include

#include

using

namespace std;

//**************string******************//

// ascii與unicode互轉

wstring asciitounicode

(const string& str)

; string unicodetoascii

(const wstring& wstr)

;// utf8與unicode互轉

wstring utf8tounicode

(const string& str)

; string unicodetoutf8

(const wstring& wstr)

;// ascii與utf8互轉

string asciitoutf8

(const string& str)

; string utf8toascii

(const string& str)

;//**************cstring******************//

// ascii與unicode互轉

cstringw asciitounicode_cstr

(const cstringa& str)

; cstringa unicodetoascii_cstr

(const cstringw& wstr)

;// utf8與unicode互轉

cstringw utf8tounicode_cstr

(const cstringa& str)

; cstringa unicodetoutf8_cstr

(const cstringw& wstr)

;// ascii與utf8互轉

cstringa asciitoutf8_cstr

(const cstringa& str)

; cstringa utf8toascii_cstr

(const cstringa& str)

;/************string-int***************/

// string 轉 int

intstringtoint

(const string& str)

; string inttostring

(int i)

; string inttostring

(char i)

; string inttostring

(double i)

;

.cpp

#pragma once  

#include

"stdafx.h"

#include

"utn.h"

wstring asciitounicode

(const string& str)

string unicodetoascii

(const wstring& wstr)

wstring utf8tounicode

(const string& str)

string unicodetoutf8

(const wstring& wstr)

string asciitoutf8

(const string& str)

string utf8toascii

(const string& str)

// ascii與unicode互轉

cstringw asciitounicode_cstr

(const cstringa& str)

cstringa unicodetoascii_cstr

(const cstringw& wstr)

// utf8與unicode互轉

cstringw utf8tounicode_cstr

(const cstringa& str)

cstringa unicodetoutf8_cstr

(const cstringw& wstr)

// ascii與utf8互轉

cstringa asciitoutf8_cstr

(const cstringa& str)

cstringa utf8toascii_cstr

(const cstringa& str)

// string 與 int 互轉

intstringtoint

(const string& str)

string inttostring

(int i)

string inttostring

(char i)

string inttostring

(double i)

python json中文字元處理

如果json中包含中文字元,我們將其寫入檔案中會怎樣呢?import json data with open data.json w as file file write json.dumps data,indent 2 引數indent指定縮排數。執行之後,結果如下 可以看到結果中,中文字元都變成...

處理ANSI中文字元問題

今天寫文字框類,使用ansi編碼對中文處理遇到的問題,現在和大家一起分享一下,如果您覺得這個問題很菜,那你可不並看,也不要,不要出來無理批評.如果您有更深的見解,更好的方式,本人非常願意您能分享.好進入正題,在vc中,使用指標方式儲存字串.如 char str 字串abc123 這個指標長度為 字串...

post時處理中文字元

做個乙個網頁資訊的查詢,很無奈的發現post資訊中的中文部分錯誤。試了很多方法後發現,把資訊轉換成uft8格式問題解決 name name.decode cp936 encode utf8 完整 coding cp936 import re import urllib import urllib2 ...