我在Excel工作表中使用了我希望用Base64進行編碼的XML文本。我發現了一些實際上做得很好的代碼。唯一的問題是,我不能使用Excel中的VBA編碼特殊字符,如德語變音符號。 那麼有人知道如何做到這一點?我認爲這應該是可能的,因爲PHP base64函數也可以處理這些字符。在Excel中對Base64進行特殊字符編碼VBA
0
A
回答
1
Base64編碼的字符串表示在某些字符集中包含特殊字符的初始字符串,適用於這些特殊字符。所以首先你應該選擇使用哪個字符集。通常UTF-8或UTF-16都可以。我猜你遇到的問題是由ASCII文件引起的。
在下面的例子TextBase64Encode
功能允許文本編碼爲Base64和TextBase64Decode
到回解碼成文字:
Function TextBase64Encode(strText, strCharset)
Dim arrBytes
With CreateObject("ADODB.Stream")
.Type = 2 ' adTypeText
.Open
.Charset = strCharset
.WriteText strText
.Position = 0
.Type = 1 ' adTypeBinary
arrBytes = .Read
.Close
End With
With CreateObject("Microsoft.XMLDOM").createElement("tmp")
.DataType = "bin.base64"
.nodeTypedValue = arrBytes
TextBase64Encode = Replace(Replace(.Text, vbCr, ""), vbLf, "")
End With
End Function
Function TextBase64Decode(strBase64, strCharset)
Dim arrBinary
With CreateObject("MSXML2.DOMDocument").createElement("tmp")
.DataType = "bin.base64"
.Text = strBase64
arrBinary = .nodeTypedValue
End With
With CreateObject("ADODB.Stream")
.Type = 1 ' adTypeBinary
.Open
.Write arrBinary
.Position = 0
.Type = 2 ' adTypeText
.Charset = strCharset
TextBase64Decode = .ReadText
.Close
End With
End Function
爲了使它更清楚,我進入了一個樣本,包含特殊字符,如德國元音在單元A2
中,字符集ASCII
在B2
和公式=TextBase64Encode($A$2;B2)
在C2
中。現在ASCII表示編碼爲Base64串將出現在細胞C2
:
輸入的公式=TextBase64Decode(C2;B2)
在D2
爲Base64解碼回到:
增加了更多的字符集,拉伸式向下並加入標題:
現在你可以看到,UTF-8,UTF-16,UTF-7,Windows-1250,latin1保留了初始樣本變音符號,但是ASCII分支。有關係統已知的字符集名稱的列表,請參閱Windows註冊表中的HKEY_CLASSES_ROOT\MIME\Database\Charset
的子項。請注意,UTF-16 LE編碼的字符串在開始時通常包含字節0xFF,0xFE,它們是Unicode字節順序標記(BOM),而BOM的UTF-8表示字母在開始處爲字節0xEF,0xBB,0xBF。順便說一句,只需將bin.base64
替換爲bin.hex
即可使用六進制值代替Base64。
相關問題
- 1. 在Python中對unicode特殊字符(符號)進行編碼?
- 2. 如何在jQuery中對特殊字符(>,<,%)進行編碼
- 3. 在Excel VBA中輸入特殊字符
- 4. 如何使用Excel VBA高效地對base64進行編碼?
- 5. 對JSON中的特殊字符進行編碼(äöüß)
- 6. JavaScript - 使用特殊字符對對象進行編碼
- 7. Docusignapi Invalid_Request_Body XML如何對特殊字符進行編碼
- 8. 使用特殊拉丁字符對XML文件進行編碼
- 9. 如何在Android中使用Base64對字符串進行編碼?
- 10. 刪除特殊字符VBA Excel
- 11. 編碼特殊字符
- 12. fineuploader - 編碼特殊字符
- 13. xslt編碼特殊字符
- 14. xml編碼特殊字符
- 15. Python:編碼特殊字符
- 16. 編碼特殊字符
- 17. 特殊字符編碼
- 18. JSON編碼 - 特殊字符
- 19. 在xml中編碼特殊字符
- 20. 編碼特殊字符在Java中
- 21. 在mySQL中編碼特殊字符
- 22. 在javascript/python中編碼特殊字符
- 23. 在JSON響應中對HTML特殊字符進行編碼的安全優勢
- 24. 在Java中對URL進行編碼,同時保留特殊字符
- 25. 特殊字符進行編碼在URL傳遞和JavaScript的
- 26. 對特殊字符進行Xslt轉換
- 27. 如何在excel/vba中進行特殊類型的舍入
- 28. 使用VBA在Excel中進行特殊粘貼
- 29. 對字符進行編碼
- 30. 如何阻止GET方法對URI中的HTML特殊字符進行編碼?
你從哪裏找到代碼/代碼是什麼?請更新您的問題以包含此內容 – CallumDA
通過'ADODB.Stream'將UTF-8或Unicode中的XML文本轉換爲二進制數據,然後通過'MSXml2.DOMDocument'將該二進制文件轉換爲Base64。 – omegastripes