vb的cgi程序解码时不认汉字的情况.txt
来自「VB技巧问答10000例 VB技巧问答10000例」· 文本 代码 · 共 19 行
TXT
19 行
一 旦 你 在 VB中 遇 到 字 符 串 操 作 对 英 文 正 常 而 对 中 文 异 常 , 你 就 应 该 想 到 又 是 VB讨 厌 的 字 符 串 处 理 方 式 在 捣 鬼 。 你 的 程 序 出 问 题 主 要 是 因 为 在 解 %编 码 的 那 个 Do...Loop循 环 。 由 于 你 的 操 作 系 统 是 中 文 的 , 所 以 Chr函 数 是 处 在 双 字 节 工 作 方 式 下 , 也 就 是 说 Chr("&HE2")是 非 法 的 , 而 Chr("&HE2D7")是 合 法 的 , 它 代 表 你 的 姓 “ 庾 ” 。 将 这 个 循 环 修 改 如 下 :
Do
pos = InStr(pos + 1, sEncoded, "%")
If pos = 0 Then Exit Do
If Mid$(sEncoded, pos + 1, 1) > "A" Then
Mid$(sEncoded, pos) = Chr$("&H" & (Mid$( _
sEncoded, pos + 1, 2)))
sEncoded = Left$(sEncoded, pos) _
& Mid$(sEncoded, pos + 3)
Else
Mid$(sEncoded, pos) = Chr$("&H" & (Mid$(sEncoded _
, pos + 1, 2) + Mid$(sEncoded, pos + 4, 2)))
sEncoded = Left$(sEncoded, pos) _
& Mid$(sEncoded, pos + 6)
End If
Loop
现 在 一 切 该 正 常 了 。
<END>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?