PB中字元編碼轉換
//*******************************************code***********************************************************
//程式碼在PB9,window7 64bit 測試通過,對程式碼有疑問的可以傳送郵件進行諮詢[email protected]
//-----------------------------------------of_unicode_utf8-----------------------------------------------------------------
// 函式: n_cst_utilities::of_unicode_utf8()
//--------------------------------------------------------------------
// 描述: Unicode編碼轉換為UTF8編碼
//--------------------------------------------------------------------
// 引數:
// reference blob ablb_unicode
// reference blob ablb_UTF8
//--------------------------------------------------------------------
// 返回值: long 轉換後的位元組數
//--------------------------------------------------------------------
// 作者: xiedaolin 日期: 2012.12.13
//--------------------------------------------------------------------
// 修改歷史:
//
//====================================================================
long ll_Unicode_Size, ll_UTF8_Size
ll_Unicode_Size = len(ablb_unicode)
if ll_Unicode_Size < 1 then
return 0
end if
ll_Unicode_Size = ll_Unicode_Size/2
//獲取轉換需要的位元組數
ll_UTF8_Size = WideCharToMultiByte(CP_UTF8, 0, ablb_unicode, ll_Unicode_Size, ablb_utf8, 0, 0, 0)
if ll_UTF8_Size < 1 then
return 0
end if
ablb_utf8 = Blob(space(ll_UTF8_Size))
ll_UTF8_Size = WideCharToMultiByte(CP_UTF8, 0, ablb_unicode, ll_Unicode_Size, ablb_utf8, ll_UTF8_Size, 0, 0)
if ll_UTF8_Size < 1 then
return 0
end if
return ll_UTF8_Size
//------------------------------------------------of_utf8_unicode----------------------------------------------------------
//====================================================================
// 函式: n_cst_utilities::of_utf8_unicode()
//--------------------------------------------------------------------
// 描述: UTF-8 編碼轉換為 Unicode 編碼格式
//--------------------------------------------------------------------
// 引數:
// reference blob ablb_UTF8
// reference blob ablb_Unicode
//--------------------------------------------------------------------
// 返回值: integer 多少位元組被轉換
//--------------------------------------------------------------------
// 作者: xiedaolin 日期: 2012.12.13
//--------------------------------------------------------------------
// 修改歷史:
//
//====================================================================
long ll_UTF8_Size
long ll_Unicode_Byte_Size, ll_Unicode_WChar_Size
blob lblb_null
setnull(lblb_null)
ll_UTF8_Size = len(ablb_UTF8)
//獲取轉換後需要的記憶體空間
ll_Unicode_WChar_Size = MultiByteToWideChar(CP_UTF8, 0, ablb_UTF8, ll_UTF8_Size, lblb_null, 0)
if ll_Unicode_WChar_Size < 1 then
return 0
end if
ll_Unicode_Byte_Size = ll_Unicode_WChar_Size * 2
ablb_Unicode = blob(space(ll_Unicode_Byte_Size))
//開始轉換
ll_Unicode_WChar_Size = MultiByteToWideChar(CP_UTF8, 0, ablb_UTF8, ll_UTF8_Size, ablb_Unicode, ll_Unicode_Byte_Size)
if ll_Unicode_WChar_Size < 1 then
return 0
end if
return ll_Unicode_Byte_Size
//-----------------------------------------------of_ANSI_Unicode-----------------------------------------------------------
//====================================================================
// 函式: n_cst_utilities::of_ANSI_Unicode()
//--------------------------------------------------------------------
// 描述: ANSI 編碼轉換為 Unicode 編碼格式
//--------------------------------------------------------------------
// 引數:
// value string as_ANSI
// reference blob rblb_Unicode
//--------------------------------------------------------------------
// 返回值: long 多少位元組被轉換
//--------------------------------------------------------------------
// 作者: xiedaolin 日期: 2012.12.13
//--------------------------------------------------------------------
// 修改歷史:
//
//====================================================================
long ll_ANSI_Size
long ll_Unicode_Byte_Size, ll_Unicode_WChar_Size
blob lblb_ANSI
blob lblb_null
setnull(lblb_null)
lblb_ANSI = BLOB(as_ansi)
ll_ANSI_Size = len(lblb_ANSI)
//獲取轉換後需要的記憶體空間
ll_Unicode_WChar_Size = MultiByteToWideChar(CP_ACP, 0, lblb_ANSI, ll_ANSI_Size, lblb_null, 0)
if ll_Unicode_WChar_Size < 1 then
return 0
end if
ll_Unicode_Byte_Size = ll_Unicode_WChar_Size * 2
rblb_unicode = blob(space(ll_Unicode_Byte_Size))
//開始轉換
ll_Unicode_WChar_Size = MultiByteToWideChar(CP_ACP, 0, lblb_ANSI, ll_ANSI_Size, rblb_unicode, ll_Unicode_Byte_Size)
if ll_Unicode_WChar_Size < 1 then
return 0
end if
return ll_Unicode_Byte_Size
//---------------------------------------------------of_ANSI_UTF8-------------------------------------------------------
//====================================================================
// 函式: n_cst_utilities::of_ANSI_UTF8()
//--------------------------------------------------------------------
// 描述: ANSI 編碼 轉換為 UTF8 編碼
//--------------------------------------------------------------------
// 引數:
// reference string as_ANSI
// reference blob ablb_UTF8
//--------------------------------------------------------------------
// 返回值: long 轉換後的位元組數
//--------------------------------------------------------------------
// 作者: xiedaolin 日期: 2012.12.13
//--------------------------------------------------------------------
// 修改歷史:
//
//====================================================================
blob lblb_Unicode
long ll_Unicode_Size, ll_UTF8_Size
if isnull(as_ansi) or len(as_ansi) = 0 then
return 0
end if
lblb_Unicode = ToUnicode(as_ansi)
ll_Unicode_Size = len(lblb_Unicode)
of_ANSI_Unicode(as_ansi, lblb_Unicode)
ll_Unicode_Size = len(lblb_Unicode)
if ll_Unicode_Size < 1 then
return 0
end if
ll_UTF8_Size = of_unicode_utf8( lblb_Unicode, ablb_utf8)
return ll_UTF8_Size
//------------------------------------------------of_UTF8_ANSI----------------------------------------------------------
//====================================================================
// 函式: n_cst_utilities::of_UTF8_ANSI()
//--------------------------------------------------------------------
// 描述:
//--------------------------------------------------------------------
// 引數:
// reference blob ablb_UTF8
// reference string as_ANSI
//--------------------------------------------------------------------
// 返回值: integer
//--------------------------------------------------------------------
// 作者: xiedaolin 日期: 2012.12.13
//--------------------------------------------------------------------
// 修改歷史:
//
//====================================================================
blob lblb_Unicode, lblb_ANSI
long ll_Unicode_Size, ll_UTF8_Size
ll_Unicode_Size = of_UTF8_Unicode(ablb_utf8, lblb_Unicode)
if ll_Unicode_Size < 1 then
return 0
end if
as_ansi = FromUnicode(lblb_Unicode)
return len(as_ansi)
//----------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------
相關推薦
PB中字元編碼轉換
//*******************************************code*********************************************************** //程式碼在PB9,window7 64bit 測試通過,對程式碼有疑問的可以傳送郵件進
淺談C/C++程式設計中的字元編碼轉換
背景 在寫跨平臺的C/C++程式碼過程中(本文的研究只限於C/C++範疇),經常會遇到中文字串亂碼的問題。比如,同一個原始碼,用MSVC編譯/執行能正常顯示中文字串,但在linux下編譯/執行顯示中文字串就亂碼。 導致這種現象的根源就在於字符集編碼不匹配導致
PB中的型別轉換
問:pb 中型別轉換函式是什麼? 答:例如以下函式是型別轉換函式: Char() 功能將字串的第一個字元、Blob變數的第一個值、或一個整數轉換成字元。 語法Char ( n ) 引數n:字串、Blob變數或整數,也可以是包含上述型別資料的Any型別變數返回值Char。
程式設計過程中字元編碼亂碼問題彙總
一、避免 亂碼 的一些注意點: 1.儘量使用統一的編碼,如果你是重頭開發一個系統,特別是Java開發的,推薦從頁面到資料庫再到配置檔案都使用UTF-8進行編碼,安全第一。 2.SetCharacterEncodingFilter的使用,這個東西不是萬能的,但是沒有它就會很麻煩,如果是
C#實戰015:Excel操作-字元編碼轉換
在讀取Excel時遇到一個問題,那就是讀取出來的單表出現了亂碼的現象,我們可以看到很多漢字無法識別出來。 在存入時對字元編碼進行指定: public void getHeader
python中字元編碼:coding utf-8, unicde, defaultencoding, UnicodeDecodeError, UnicodeEncodeError
2.位元組與字元 計算機儲存的任何資料,包括各種文字、圖片、音視訊檔案等等,實際上都是一串二進位制數字01位元組序列組成的。相信大家都知道,一個位元組Byte(B)是8個位元bit(b)。 而字元,自然就是符號了。比如說二十六個英文字母,阿拉伯數字,以及在pyt
MySql資料庫中查詢修改表中字元編碼(charset)的方法
MySQL字符集多種多樣,下面為您列舉了其中三種最常見的MySQL字符集檢視方法,該方法供您參考,希望對您學習MySQL資料庫能有所啟迪。 一、檢視MySQL資料庫伺服器和資料庫MySQL字符集。 mysql> show variables like '%char%
Python基礎(集合用法、檔案操作、字元編碼轉換、函式)
集合(Set)及其函式 集合是一個無序的、無重複元素的序列。 1 list = {1, 3, 6, 5, 7, 9, 11, 3, 7} # 定義集合方式一 2 list1 = set([1, 3, 6, 5, 7, 9, 11, 3, 7]) # 定義集合方式二 3 list2 = se
絕對正確絕對全的TCHAR和char的轉換以及字元編碼轉換
TCHAR轉為char 沒有定義UNICODE,所以它裡面的字串就是簡單用" "就行了,建立工程的時候包含了UNICODE定義,就必須對TCHAR和char進行轉換。 首先是把TCHAR轉為char [cpp] view plaincopyprint? //將TCHAR轉
C語言下使用iconv函式實現字元編碼轉換
1.iconv相關函式介紹 iconv命令是用來轉換檔案的編碼方式的(Convert encoding of given files from one encoding to another),比如它可以將UTF8編碼的轉換成GB18030的編碼,反過來也行。一般linux下包含iconv指令: 格式:ico
QT的字元編碼轉換
開發的終端需要接入兩個外設,二代證讀取裝置和印表機。 讓人鬱悶的是,兩個裝置的字元編碼與終端系統不一致,一開始耗了不少時間,後來才注意到字元編碼的問題。 二代證讀出來的資料都是用unicode編碼的,而列印子要求穿過去的資料要轉換成unicode編碼。 查閱了hel
linux c 字元編碼轉換函式 iconv
一、利用iconv函式族進行編碼轉換 在LINUX上進行編碼轉換時,既可以利用iconv函式族程式設計實現,也可以利用iconv命令來實現,只不過後者是針對檔案的,即將指定檔案從一種編碼轉換為另一種編碼。 iconv函式族的標頭檔案是iconv.h,使用前需包含之。 #
相容正點原子 stm32f103 UTF8字元編碼轉換 GBK 編碼格式
最近想做一個 網路天氣的小東西.好容易寫好了驅動,GET 了一下天氣網站的 API 返回竟然是中文亂碼,猜測是 UTF8 亂碼,果不其然.於是就自己去尋找網上大神們的解決方案:一般是 UTF-8 -> Unicode ->GBK (中文) 關鍵字: stm32103 嵌入式 u
python中字串編碼轉換
字串編碼轉換程式設計師最苦逼的地方,什麼亂碼之類的幾乎都是由漢字引起的。 其實編碼問題很好搞定,只要記住一點: 任何平臺的任何編碼,都能和Unicode互相轉換。 UTF-8與GBK互相轉換,那就先把UTF-8轉換成Unicode,再從Unicode轉換成GBK,反之同理。 注意:在python3中en
JAVA/JS中中文編碼轉換
一、JAVA中,使用UTF-8進行編碼 和 使用UTF-8的UrlEncode編碼結果不同 UTF-8“君山”:君山 UTF-8/UrlEncode“君山”:%e5%90%9b%e5%b1%b1 String s = "君山";
深入理解IO流中字元編碼問題
首先了解一下常用的編碼:ASCII:ASCII碼是7位編碼,ASCII字符集包括英文字母、阿拉伯數字和標點符號等字元。專門給英語國家設計的編碼。GB2312:中文字符集,只收錄了6763個常用漢字,字符集中除常用簡體漢字字元外還包括希臘字母、日文等字元,未收錄繁體中文漢字和一
小工具———字元編碼轉換檢視(MFC)
最近這一年多的工作當中,有很多工作都涉及到了編碼問題,每次都要去網上查很麻煩,所以,現在自己寫了一個工具,方便檢視各種各樣的字元編碼。 是用VS2012寫的,用了MFC。 直接上圖吧 說明: **1.**URL編碼 對空格處理成“+”號,還有一種是處
字元編碼轉換(ActionScript)
ActionScript在處理網頁內容或者一些文字資訊時,經常會遇到一些字元編碼的轉換,這裡給出了一個簡單的字元編碼轉換的類。 package com { import flash.utils.ByteArray; public class SuperStr {
Windows下字元編碼轉換
// // get current time, yyyyMMddhhmmss // char* curtime( char *p, uint len ) { if( NULL != p ) { time_t tt; time( &tt ); tm*
Windows字元編碼轉換
利用ATL中的字串裝換巨集,對Unicode和非Unicode編譯環境下的字元進行巨集定義封裝,可以在ANSI、Unicode以及UTF-8之間進行快速轉換。 #if (defined _UNICOD