3

次のような HTML エンコードされた文字列を含む MS Access 2003 のテーブル フィールドがあります。

Ανταγωνισμός παγκοσμίου επιπέδου στην κατάρτι&#963

MS Access を使用して、これを「通常の文字列」にデコードするにはどうすればよいですか?

前もって感謝します。


ここに私がこれまでに持っているものがあります。ここで提供されているVbコードを使用して(ところで、FF 3.5やChrome 2からではなく、IE7からのみそのページを開くことができました)、次の関数を書きました:

Private Function UnicodeDecode(StringToDecode As String) As String
  Dim TempAns As String
  Dim CurChr As Integer
  CurChr = 1
  Do Until CurChr - 1 = Len(StringToDecode)
    Select Case Mid(StringToDecode, CurChr, 2)
    Case "&#"
      TempAns = TempAns & Chr(Mid(StringToDecode, CurChr + 2, 3))
       CurChr = CurChr + 5
    Case Else
      TempAns = TempAns & Mid(StringToDecode, CurChr, 1)
    End Select
    CurChr = CurChr + 1
  Loop
  UnicodeDecode = TempAns
End Function

これで、255 までの文字の 10 進値を指定すると機能します。たとえば、次のように実行します。

Chr(338)

「無効なプロシージャ コールまたは引数」で失敗します。この参照によると、MS Access はデフォルトで ISOlat1 標準のみをサポートしていると思います。ただし、ISOgrk3 である 913 を超える 10 進数値を持つ Unicode 文字を変換する必要があります。

どうすればそれを達成できるか知っている人はいますか?

再度、感謝します。

4

6 に答える 6

4

msxml6.dll (Microsoft XML v6.0) を使用して、HTML エンティティを VBA のプレーン テキストに変換できます。

Set oDOMDoc = CreateObject("Msxml2.DOMDocument.6.0")
Html = "<Black>"2"
oDOMDoc.LoadXML ("<root>" & Html & "</root>")
HtmlDecode = oDOMDoc.Text
于 2012-10-10T17:48:45.107 に答える
2

本当にありがとう。入力配列が4桁 (ペルシャ語など) の場合、いくつかのコードを変更する必要があります。また、MS Access でマクロとして使用する場合は、関数をパブリックにする必要があります。Chr() の代わりにChrW()を適用します。

Public Function UnicodeDecode(StringToDecode As String) As String
  Dim TempAns As String
  Dim CurChr As Integer
  CurChr = 1
  Do Until CurChr - 1 = Len(StringToDecode)
    Select Case Mid(StringToDecode, CurChr, 2)
    Case "&#"
      TempAns = TempAns & ChrW(Mid(StringToDecode, CurChr + 2, 4))
       CurChr = CurChr + 6
    Case Else
      TempAns = TempAns & Mid(StringToDecode, CurChr, 1)
    End Select
    CurChr = CurChr + 1
  Loop
  UnicodeDecode = TempAns
End Function
于 2010-03-13T23:12:08.123 に答える
1

次の記事では、さまざまな方向性を提案しています。

Visual Basic 6 での Unicode の使用(Access の VBA は VB6 のスーパーセットです)

次に、おそらく次の Access/VBA 関数をいじりたくなるでしょう。

  • StrConv()
  • AscB()
  • ChrB()

これですべてが解決するわけではありませんが、出発点になるはずです。

StrConv() の 2 番目の引数の 2 つの定数、vbUnicode と vbFromUnicode、および最後のオプションの引数は文字セットであることに注意してください。この定数 -- dbLangGreek 定数は ";LANGID=0x0408;CP=1253;COUNTRY=0" を返します)。

このためにギリシャ語に限定されている限り、文字を対応する数値エンコーディングにマップする配列を設定するだけでよいかもしれません。ただし、複数のエンコーディングを処理するソリューションを使用する方がよいと思います。

最後に、Michael Kaplan の以前の Web サイトである Trigeminal.com の次のページにアクセスしてみてください。

Trigeminal Software, Inc. のローカライズされた Web サイト

...最後までスクロールして、「このサイトのその他の I18n リソース」を表示します。その情報の多くは .NET やその他のプログラミングでは古くなっていますが、VB6/Access VBA にはまだ適用されます。

于 2009-09-08T18:57:21.550 に答える
-1

ファイルに貼り付けてHTMLファイルとして保存し、ブラウザで開きます。

私が試したとき、ギリシャ語やアラビア語のような奇妙なフォントを手に入れました。それは私よりもあなたにとって意味があると確信しています。

Ανταγωνισμόςπαγκοσμίουεπιπέδουστηνκατάρτισ(ギリシャ語)

于 2009-09-07T16:29:38.150 に答える