解決方案:
構造三層邏輯結構:輸入層、邏輯處理層、輸出層。
– 輸入層接收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 ...