附vb的实现代码Public Function TextToUTF(ByVal sText As String) As Variant
'On Error Resume Next
Dim bUTF() As Byte
Dim lCode As Long, i As Long
Dim p As Long '数组当前位置
Dim iUTFLineLen As Integer 'UTF行长
Dim pUTFLine As Long '指向UTF行头部位置,以便记录长度
'先预留足够空间
ReDim bUTF(Len(sText) * 3 + 2)
p = 2
pUTFLine = 0
iUTFLineLen = 0
For i = 1 To Len(sText)
'If i Mod 100 = 1 Then Debug.Print i
lCode = AscW(Mid(sText, i, 1))
If lCode < 0 Then lCode = lCode + 65536
If lCode = 13 Then
'在该行头部填写本行长度
bUTF(pUTFLine) = iUTFLineLen \ 256
bUTF(pUTFLine + 1) = iUTFLineLen Mod 256
'准备下行长度
iUTFLineLen = 0
'移动到下行位置
pUTFLine = p
'预留2字节空间,以便保存本行长度
p = p + 2
ElseIf lCode = 10 Then
'vbLf忽略
ElseIf lCode <= &H7F Then '0xxxxxxx
bUTF(p) = lCode
p = p + 1
iUTFLineLen = iUTFLineLen + 1
ElseIf lCode <= &H7FF Then '110xxxxx 10xxxxxx
bUTF(p) = &HC0 + (lCode \ 64)
bUTF(p + 1) = &H80 + (lCode Mod 64)
p = p + 2
iUTFLineLen = iUTFLineLen + 2
Else '1110xxxx 10xxxxxx 10xxxxxx
bUTF(p) = &HE0 + (lCode \ 4096)
bUTF(p + 1) = &H80 + (lCode Mod 4096) \ 64
bUTF(p + 2) = &H80 + (lCode Mod 64)
p = p + 3
iUTFLineLen = iUTFLineLen + 3
End If
Next
'最后一行的长度
bUTF(pUTFLine) = iUTFLineLen \ 256
bUTF(pUTFLine + 1) = iUTFLineLen Mod 256
'重新定义正确长度的字节数组后返回
ReDim Preserve bUTF(0 To p - 1)
TextToUTF = bUTF
End Function
'On Error Resume Next
Dim bUTF() As Byte
Dim lCode As Long, i As Long
Dim p As Long '数组当前位置
Dim iUTFLineLen As Integer 'UTF行长
Dim pUTFLine As Long '指向UTF行头部位置,以便记录长度
'先预留足够空间
ReDim bUTF(Len(sText) * 3 + 2)
p = 2
pUTFLine = 0
iUTFLineLen = 0
For i = 1 To Len(sText)
'If i Mod 100 = 1 Then Debug.Print i
lCode = AscW(Mid(sText, i, 1))
If lCode < 0 Then lCode = lCode + 65536
If lCode = 13 Then
'在该行头部填写本行长度
bUTF(pUTFLine) = iUTFLineLen \ 256
bUTF(pUTFLine + 1) = iUTFLineLen Mod 256
'准备下行长度
iUTFLineLen = 0
'移动到下行位置
pUTFLine = p
'预留2字节空间,以便保存本行长度
p = p + 2
ElseIf lCode = 10 Then
'vbLf忽略
ElseIf lCode <= &H7F Then '0xxxxxxx
bUTF(p) = lCode
p = p + 1
iUTFLineLen = iUTFLineLen + 1
ElseIf lCode <= &H7FF Then '110xxxxx 10xxxxxx
bUTF(p) = &HC0 + (lCode \ 64)
bUTF(p + 1) = &H80 + (lCode Mod 64)
p = p + 2
iUTFLineLen = iUTFLineLen + 2
Else '1110xxxx 10xxxxxx 10xxxxxx
bUTF(p) = &HE0 + (lCode \ 4096)
bUTF(p + 1) = &H80 + (lCode Mod 4096) \ 64
bUTF(p + 2) = &H80 + (lCode Mod 64)
p = p + 3
iUTFLineLen = iUTFLineLen + 3
End If
Next
'最后一行的长度
bUTF(pUTFLine) = iUTFLineLen \ 256
bUTF(pUTFLine + 1) = iUTFLineLen Mod 256
'重新定义正确长度的字节数组后返回
ReDim Preserve bUTF(0 To p - 1)
TextToUTF = bUTF
End Function
解决方案 »
- 获得file的整个路径(针对firefox)
- 送域名+送网页空间+送企业邮局/送SQL数据库
- 我的PHP程序在本地通过测试,但是放到服务器上却不能够传递session,请问是哪里配置有问题吗
- php最简单的问题,只耽误高手1分钟时间,进来指点下。。。
- 菜鸟求助,高手请进,送分了
- prototype操作ajax的高难度问题(在线等)
- this 在继承的类中指向父类?
- iis下怎样以isapi方式而不是cgi方式安装php?
- 学习模板好长时间了,还是好模糊,能再给点帮助吗?
- 很急,问题很简单,请快回答!
- 提供一段vb的gb2312 to utf8 代码.问用php如何写? 有现成的吗?
- 大家回答我两个问题:1、相对路径;2、相对文件?
iconv转出来如何写成文件?已知
$s = "该书的相关说明";
//$u = gb2utf8($s);
$u = iconv("GB2312","UTF-8",$s);
echo $u;
$fp = fopen("test1", "w");
fwrite($fp,$u);
fclose($fp);这样是不行的。写出来对不上