TIÊN DU 1
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.


TIÊN DU 1
 
Trang ChínhLatest imagesTìm kiếmĐăng kýĐăng Nhập

Share | 
 

 Việt hóa J2ME (phần 10) - Sử dụng kỹ năng lập trình trong việt hóa

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giả{
Bình chọn cho bài viết:
}
Heomyt
S-mod
S-mod
Heomyt

Tổng số bài gửi : 73
Điểm : 14769
Rep Power : 7
Join date : 27/02/2011
Age : 29
Đến từ : Ngò Cyti

Việt hóa J2ME (phần 10) - Sử dụng kỹ năng lập trình trong việt hóa  Empty
Bài gửiTiêu đề: Việt hóa J2ME (phần 10) - Sử dụng kỹ năng lập trình trong việt hóa    Việt hóa J2ME (phần 10) - Sử dụng kỹ năng lập trình trong việt hóa  Icon_minitimeThu Mar 03, 2011 3:15 pm

Soi lại UTF-8, mình đã dành riêng 1 bài dành cho UTF-8 (xem chi tiết),
trong đó các bạn đã biết được quy luật chuyển đổi giữa UTF-8 và
Unicode. Các bạn hãy chú ý lại một điều, những ký tự thuộc 256 ký tự
ANSII sẽ không hề thay đổi khi chuyển chúng giữa ANSII và UTF-8. Hãy
ghi nhớ điều này

Tiếp đến, các bạn nên xem lại phần 1 của bài này (xem chi tiết),
chúng ta có thể dùng Notepad++ để mã hóa dạng ANSII của văn bản sang mã
UTF-8. Như đã nói ở trên, chỉ những ký tự không thuộc ANSII (2 byte trở
lên) mới thay đổi khi ta thực hiện mã hóa, còn những ký tự 1 byte sẽ không hề thay đổi khi ta thực hiện thao tác này

Vậy có nghĩa là 2 ký tự "lạ" trước mỗi câu sẽ giữ nguyên giá trị và
kích thước của nó. Đến đây bạn đã nhận ra được gì chưa nhỉ. Nếu chưa
thì hãy xem lại bài nâng cao đầu tiên của mình (xem chi tiết), bạn sẽ được biết chính 2 ký tự này sẽ quy định độ dài của câu.

Như vậy công việc của chúng ta bây giờ là sửa các câu và hai ký tự quan
trọng đứng trước mỗi câu. Giá trị của hai ký tự này tùy thuộc độ dài
(số ký tự) của câu đứng ngay sau nó. Nhưng chú ý độ dài của các câu này
không phải tính theo số ký tự ở dạng Unicode mà bạn được thấy mà phải ở
dạng UTF-8 nguyên thủy.

Bây giờ chúng ta cùng tìm cách để làm sao cho nhanh nhé. Tất nhiên muốn
nhanh thì không thể bằng cách tự ngồi đếm số ký tự được mà chúng ta
phải nhờ đến máy tính. Muốn vậy chúng ta cần có kiến thức về lập trình
- đây chính là nội dung chính của bài viết, cũng là nguyên nhân của cái
tiêu đề dài dòng bên trên Việt hóa J2ME (phần 10) - Sử dụng kỹ năng lập trình trong việt hóa  71

Mình đã share một code chuyển đổi mẫu trên diễn đàn rồi (tham khảo tại đây)
UTF-8 chuyển thành ký tự Unicode thì Notepad++ làm rồi, ta có thể tạm
bỏ qua và chỉ quan tâm đến Unicode -> UTF-8 thôi. Bạn xem đoạn code
sau

Code:

Public Function Unicode2UTF8(chuoiUnicode As String) As String
'Author: Lord Kaj
'Language: Visual Basic 6
'Object: Module Function
'Level: Advance
'Input: Unicode string
'Output: UTF8 string
'Copyright: wWw.OpenItvn.Net

Dim phan1 As Variant, phan2 As Variant, phan3 As Variant
Dim vitriB As Integer
Dim kytuUnicode As String
vitriB = 1
Unicode2UTF8 = ""
Do While vitriB <= Len(chuoiUnicode)
kytuUnicode = AscW(Mid(chuoiUnicode, vitriB, 1))
If kytuUnicode < 128 Then
Unicode2UTF8 = Unicode2UTF8 & Mid(chuoiUnicode, vitriB, 1)
Else
phan3 = (kytuUnicode Mod 64) + 128
phan1 = ((kytuUnicode - 128) \ 64) + 194
If phan1 > 223 Then
phan2 = ((phan1 - 128) \ 64) + 223
phan1 = (phan1 Mod 64) + 128
Unicode2UTF8 = Unicode2UTF8 & Chr(phan2) & Chr(phan1) & Chr(phan3)
Else
Unicode2UTF8 = Unicode2UTF8 & Chr(phan1) & Chr(phan3)
End If
End If
vitriB = vitriB + 1
Loop
End Function

Công dụng của hàm trên là đưa một chuỗi Unicode trở lại thành UTF-8
Đây là cách sử dụng nó. Bạn đưa vào tham số chuỗi Unicode khi gọi hàm này từ chương trình chính

Code:

Dim chuoiUFT8 As String
ChuoiUTF8 = Unicode2UTF8("Nội dung chuỗi Unicode")

Kết quả trả về sẽ là "Ná»™i dung chuá»—i Unicode"

Như đã nói, vấn đề chỉ còn lại là 2 ký tự đặc biệt đầu tiên sẽ ra sao
thôi. Vì vậy ta dùng hàm trên để lấy độ dài của chuỗi Unicode sau khi
đã được đưa về UTF-8. Và hàm Len kết hợp hàm trên sẽ đem lại điều mà ta muốn

Code:

Len(Unicode2UTF8("Nội dung chuỗi Unicode"))

Kết quả trả về sẽ là độ dài của "Ná»™i dung chuá»—i Unicode", tức là bằng 26.
Đổi chuỗi này ra hex và nhớ thêm [00] phía trước nếu như kết quả chỉ có
1 byte (luôn nhớ rằng chúng ta có đến 2 ký tự đặc biệt phía trước),
Việc này cũng có thể nhờ máy tính làm luôn cho nhanh

Code:

Dim dodaicau As Integer
Dim ketqua As Variant
dodaicau = Len(Unicode2UTF8("Nội dung chuỗi Unicode"))
ketqua = Hex(dodaicau)
If dodaicau < 256 Then
ketqua = Chr(0) & Chr(CLng("&H" & ketqua))
Else
ketqua = Chr(CLng("&H" & Left(ketqua, Len(ketqua) - 2))) & Chr(CLng("&H" & Right(ketqua, 2)))
End If
'In kết quả ra textbox rồi copy paste y nguyên vào notepad++ thay thế cho câu và cả 2 ký tự đặc biệt phía trước câu thôi
txtKetqua.Text = ketquacuoicung

OK, các bạn copy paste mấy đoạn mã trên vào cho Visual Basic 6
rồi biên dịch ra sài thôi. Đến đây công việc của bạn chỉ còn dịch trong
chương trình tự tạo => copy kết quả => Paste vào những chỗ cần
thiết trong Notepad++
Vậy thôi....

Chưa có điều kiện làm 1 project lên các bạn làm hộ
nhé (mình đã nói rồi, phải có kiến thức lập trình). Nếu không làm được
thì chịu khó chờ, mình xin khất thêm vài ngày, khi có thời gian rảnh
mình sẽ làm ngay cho các bạn 1 cái :D

Chúc các bạn thành công!
Về Đầu Trang Go down
 

Việt hóa J2ME (phần 10) - Sử dụng kỹ năng lập trình trong việt hóa

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
TIÊN DU 1 :: Trò chuyện :: Không gian IT-
Chuyển đến