Microsoft Access Club >AccessTips >このページ >次頁 <前項  サイト内検索


Unicode 文字列を ANSI 文字列に変換する方法 : AccessTips124



Access2000以降、Unicodeが採用されました。Unicodeでは、半角、全角文字を問わず全て2バイトになります。

Unicode

 Apple社、IBM社、Microsoft社など米国の情報関連企業が中心となって提唱し、1993年に国際標準化機構(ISO)でISO/IEC 10646の一部(UCS-2)として標準化された文字コード体系。
 すべての文字を16ビット(2バイト)で表現し、1つの文字コード体系で多国語処理を可能にしようとするもの。世界の主要な言語のほとんどの文字を収録している。
 2バイト表記では最大65536文字しか収録できないため、中国語・日本語・韓国語で同じ意味や同じルーツの漢字はすべて同じ文字とみなし、同じコードを割り当てる統合作業(ハンユニフィケーションと呼ばれる)が行われ、文化の違いを無視したものだとの反発を招いている。
 Unicodeは、最初の規格が策定された後にハングル文字の追加や異体字表現方式の策定が行われ、部分的に3バイト以上を使用する体系に変化している。このため、現在はUnicode全体は4バイトで定義(UCS-4)されている。

IT用語辞典 e-Words

逆に、ANSI形式では、1バイトで表される文字と、漢字のように2バイトで表される文字が混在しています。

VBAはUnicode形式

VBAでANSI文字形式を利用したい場合、Unicode形式からANSI形式の文字列変換を行います。これには、StrCov関数を用います。

サンプルプロシージャ

例えば、Accessの文字をANSI形式に変換し、LenB関数でバイト数をもとめ、次にUnicode形式に戻して同じくLenB関数でバイト数を求めるプロシージャを作成すると、下記のようになります。

Function SamplePro()

    Dim strMoji As String
    Dim strChg As String
    
    strMoji = "Access"
    
    strChg = StrConv(strMoji, vbFromUnicode) '----A
    MsgBox strMoji & "は、ANSI形式で" & LenB(strChg) & " バイトの文字です"
    
    strChg = StrConv(strChg, vbUnicode) '----B
    MsgBox strMoji & "は、Unicode形式で" & LenB(strChg) & " バイトの文字です"
    
End Function
解説
  1. Accessという文字をStrConv関数でANSI文字列に変換しています。

  1. Accessという文字をStrConv関数でANSI文字列に変換しています。

留意点

このように、半角と全角を区分する(半角は1バイト、全角は2バイト)時などは、Unicodeのままでは正しく求めることはできませんので、一時的にANSI形式に変換し計算します。

関連ページ

2004/04/15

ページの先頭へ 前ページへ戻る

 


Unicode 文字列を ANSI 文字列に変換する方法 : AccessTips124


 

-Microsoft Access Club-