UTF-8 (viết tắt của 8-bit Unicode Transformation Format) là một chuẩn mã hóa ký tự dùng để biểu diễn các ký tự Unicode trong dạng dãy byte (8-bit).
🔍 Giải thích đơn giản:
Unicode là một bảng mã chứa hầu hết ngôn ngữ trên thế giới (kể cả tiếng Việt). Nhưng để lưu trữ các ký tự Unicode vào máy tính (file, cơ sở dữ liệu, truyền trên mạng...), ta cần mã hóa chúng thành byte — đó là lúc cần UTF-8.
🧠 Cách hoạt động của UTF-8:
Ký tự | Mã Unicode | Mã UTF-8 (byte) | Ghi chú |
---|---|---|---|
A |
U+0041 | 41 |
1 byte |
é |
U+00E9 | C3 A9 |
2 byte |
ộ |
U+1ED9 | E1 BB 99 |
3 byte |
𐍈 |
U+10348 | F0 90 8D 88 |
4 byte |
Ký tự ASCII cơ bản (A–Z, a–z, số, ký hiệu): 1 byte.
Ký tự tiếng Việt: thường là 2–3 byte.
Ký tự emoji, chữ cổ…: đến 4 byte.
Vì khi file excel đọc nội dung từ code VBA các file có nội dung dạng UTF8 thì khi hiển thị ra sheet excel làm không đọc được mà ta chuyển chuyển sang Unicode
Thường ứng dụng trong việc đọc giá trị 1 file txt hay csv, sau đó nạp vào sheet để xem nhưng không đọc được tiếng việt, ta sử dụng hàm sau
Function UTF8_Decode(ByVal sStr)
Dim l As Long, sUTF8 As String, iChar As Integer, iChar2 As Integer
For l = 1 To Len(sStr)
iChar = Asc(Mid(sStr, l, 1))
If iChar > 127 Then
If Not iChar And 32 Then ' 2 chars
iChar2 = Asc(Mid(sStr, l + 1, 1))
sUTF8 = sUTF8 & ChrW$(((31 And iChar) * 64 + (63 And iChar2)))
l = l + 1
Else
Dim iChar3 As Integer
iChar2 = Asc(Mid(sStr, l + 1, 1))
iChar3 = Asc(Mid(sStr, l + 2, 1))
sUTF8 = sUTF8 & ChrW$(((iChar And 15) * 16 * 256) + ((iChar2 And 63) * 64) + (iChar3 And 63))
l = l + 2
End If
Else
sUTF8 = sUTF8 & Chr$(iChar)
End If
Next l
UTF8_Decode = sUTF8
End Function
Cách chuyển đổi UTF8 sang Unicode trong VBA Excel