1. 程式人生 > >PB中字元編碼轉換

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“君山”:&#x541B;&#x5C71; 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