怎么判断是不是UTF8编码?

uvcms 2010-01-02 01:38:49
DELPHI不知道怎么判断文件或字符串是否是UTF8编码。
我看到一个VB写的

Function OnUtf8(ByVal byts() As Byte) As Boolean
Try
Dim i As Int32, AscN As Int32
Do While i <= UBound(byts)
If byts(i) < 128 Then
i += 1 'ascii字符
AscN += 1
ElseIf (byts(i) And &HE0) = &HC0 And (byts(i + 1) And &HC0) = &H80 Then
i += 2 '2个字节的utf8
ElseIf (byts(i) And &HF0) = &HE0 And (byts(i + 1) And &HC0) = &H80 And (byts(i + 2) And &HC0) = &H80 Then
i += 3 '3个字节的utf8
Else
Return False
End If
Loop

断可以不要,当全部是ascii字符时,被划分到哪种编码
If AscN = byts.Length Then
Return False
Else
Return True
End If
Catch ex As Exception
'MsgBox(ex.Message)
End Try
End Function
...全文
438 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qkhhxkj102 2010-01-05
  • 打赏
  • 举报
回复
帮顶
uvcms 2010-01-04
  • 打赏
  • 举报
回复
D
uvcms 2010-01-02
  • 打赏
  • 举报
回复
还没有好的解决方案?
haitao 2010-01-02
  • 打赏
  • 举报
回复
不考虑效率的话:
if ansi转utf8(utf8转为ansi(str))=str then
是utf8编码!
gyk120 2010-01-02
  • 打赏
  • 举报
回复
Delphi有一个UTF8DECODE的函数可以自动判断是否是UTF8编码

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧