Bo dau tieng Viet

  • Thread starter Whiterose
  • Ngày gửi
W

Whiterose

Thành viên sơ cấp
14/1/05
6
0
1
37
HCMC
#1
Xin hỏi cách chuyển tiếng Việt có dấu thành ko dấu ko?
 
Sửa lần cuối:
S

StonyHeartedMan

Thành viên sơ cấp
2/10/04
306
2
0
Hà nội
www.vnuni.net
#2
TCVN3ToVNWithoutMark

Public Function TCVN3ToVNWithoutMark(ByVal strTCVN3 As String) As String
'******************************************************************************
'* *
'* Name: TCVN3ToVNWithoutMark *
'* *
'* Purpose: Convert string in TCVN3 format to vietnamese string without mark *
'* *
'* Returns: Vietnamese string without mark *
'* *
'******************************************************************************

On Error GoTo TCVN3ToVNWithoutMark_Error
Const strTCVN3Vowels = "¸µ¹¶·©ÊÇËÈÉ¢¨¾»Æ¼½¡®§ÐÌÑÎϪÕÒÖÓÔ£ãßäáâ«èåéæ礬íêîëì¥óïñòô­øõùö÷¦Ý×ÞØÜýúþûü"
Const strVNWithoutMarkVowels = "aaaaaaaaaaaAaaaaaaAdDeeeeeeeeeeeEooooooooooooOoooooooOuuuuuuuuuuuUiiiiiyyyyy"

Dim lngVowelPosition&, i&
Dim strTemp As String

strTemp = Trim$(strTCVN3)

If Len(strTemp) = 0 Then
GoTo TCVN3ToVNWithoutMark_Done
End If

'// Convert TCVN3 string to Vietnamese string without mark
For i = 1 To Len(strTemp)
lngVowelPosition = InStr(1, strTCVN3Vowels, mID$(strTemp, i, 1), vbBinaryCompare)
If lngVowelPosition <> 0 Then
strTemp = left$(strTemp, i - 1) & mID$(strVNWithoutMarkVowels, lngVowelPosition, 1) & mID$(strTemp, i + 1)
End If
Next

'// Return vietnamese string without mark
TCVN3ToVNWithoutMark = strTemp

TCVN3ToVNWithoutMark_Done:
Exit Function

TCVN3ToVNWithoutMark_Error:
Resume TCVN3ToVNWithoutMark_Done
End Function

==================================================

Trên đây là hàm VB chuyển đổi đoạn text tiếng Việt (sử dụng bộ mã TCVN3) sang đoạn text ko có dấu. Các bạn hãy làm tương tự cho đoạn text gõ bằng mã Unicode nhé.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
845
7
18
37
Nha Trang
#3
StonyHeartedMan nói:
Trên đây là hàm VB chuyển đổi đoạn text tiếng Việt (sử dụng bộ mã TCVN3) sang đoạn text ko có dấu. Các bạn hãy làm tương tự cho đoạn text gõ bằng mã Unicode nhé.
Điều này không dể dàng đâu anh ơi. Nếu được anh giúp hộ mọi người đoạn Code đó luôn.
Đoạn code của anh dùng cho font TCVN3 (chỉ phổ biến ở miền Bắc) không phổ biến trong Nam. Sắp tới em sẽ cố gắng đưa việc cắt bỏ dấu vào Convertfont3.2 của em. Nhưng em lại cũng cho rằng việc này là không cần thiết khi mà "Vietnamese Locale CP 1258" dần trở nên phổ biến
Lưu ý với những ai chưa có hiểu biết về mã font mà muốn thay đổi đoạn code trên cho các loại font khác: Đoạn code trên sẽ không thể sửa lại cho tương tự đối với những người dùng font VNI hoặc font "Vietnamese Locale CP 1258".
 
N

NgânGiang

Cố lên! Cố lên...
10/5/05
202
0
0
16
Trong Mây mù
www.baominh.com.vn
#4
Không hiểu web này có bị sao không, mình đang soạn bài thì đứt (Báo là chưa logon). Thời gian qua (10 ngày) đi công tác thì không truy cập được.
Đúng là chuyển bỏ dấu của font Unicode khó thật, mình phải dùng tạm UniKey 3.6 để chuyển đổi qua lại giữa các loại font chữ. Còn đây là đoạn VB của mình, hiện tại phù hợp với công việc của mình hơn UniKey

' Tach dau ra khoi chuoi dung cho font VNI
Function Depbo_Dau_VNI(Chuoi)
Dim Chuoimoi, Dodai, i, Ma
Chuoi = Trim(Chuoi)
Dodai = Len(Chuoi)
Chuoimoi = ""
For i = 1 To Dodai
Ma = Asc(Mid(Chuoi, i, 1))
If Ma > 31 And Ma < 127 Then
Chuoimoi = Chuoimoi + Mid(Chuoi, i, 1)
Else
Select Case Mid(Chuoi, i, 1)
Case "Ñ"
Chuoimoi = Chuoimoi + "D"
Case "ñ"
Chuoimoi = Chuoimoi + "d"
Case "Í", "Ì", "Æ", "Ó", "Ò"
Chuoimoi = Chuoimoi + "I"
Case "í", "ì", "æ", "ó", "ò"
Chuoimoi = Chuoimoi + "i"
Case "Ô"
Chuoimoi = Chuoimoi + "O"
Case "ô"
Chuoimoi = Chuoimoi + "o"
Case "Ö"
Chuoimoi = Chuoimoi + "U"
Case "ö"
Chuoimoi = Chuoimoi + "u"
End Select
End If
Next i
Depbo_Dau_VNI = Chuoimoi
End Function
 
S

StonyHeartedMan

Thành viên sơ cấp
2/10/04
306
2
0
Hà nội
www.vnuni.net
#5
OverAC nói:
Nhưng em lại cũng cho rằng việc này là không cần thiết khi mà "Vietnamese Locale CP 1258" dần trở nên phổ biến
OverAC chú ý: Có thể OverAC ko có nhu cầu về việc bỏ dấu của 1 đoạn text đã gõ nên mới nói là việc này ko cần thiết. Mục tiêu đưa ra rất rõ ràng là:
Whiterose nói:
"Xin hỏi các anh chị có cách gì chuyển tiếng Việt có dấu thành ko dấu ko?"
1 trường hợp nữa cần dùng đến việc loại bỏ dấu tiếng Việt là khi bạn cần in phiếu bán ở quầy siêu thị POS mà máy in ko support tiếng Việt trong khi tên mặt hàng ở database bạn lại gõ tiếng Việt.

Xin nói lại là: Tôi chỉ trả lời theo đúng yêu cầu của câu hỏi bằng cách đưa ra 1 ví dụ chuyển 1 đoạn text từ TCVN3 sang Text ko có dấu. Việc đưa ví dụ trên chỉ là show ra 1 cách làm (bỏ cái từ thuật toán đi cho đỡ ghê ghớm) mà thôi. Hãy nhìn cách viết hàm, thủ tục, đặt tên biến, cách viết comments... là biết sự :biggrin: nhé (đấy là tôi đã cắt bỏ đoạn Error handle đi rồi đấy).

Nhìn cái hàm đã sáng như ban ngày thế nên tôi nghĩ việc làm tương tự cho Unicode, VNI,... là hoàn toàn đơn giản. (cái hàm trên là 1 request cực nhỏ mà tôi yêu cầu nhân viên phải viết trong vòng 5 phút. Vậy tôi có cần viết lại hàm khác cho Unicode, VNI,v.v... ko? Chỉ cần biết cách là có thể viết thành 1 cái hàm tổng quát hóa rồi. Ai có thể viết cho tôi cái interface (hay còn gọi là prototype) của cái hàm tổng quát này ko nhỉ? - Chú ý comments cho đầy đủ nhé)

Private Const CST_UnicodeVowels = "áàảãạăắằẳẵặâấầẩẫậéèẻẽẹêếềểễệíìỉĩịóòỏõọôốồổỗộơớờởỡợúùủũụưứừửữựýỳỷỹỵđÁÀẢÃẠĂẮẰẲẴẶÂẤẦẨẪẬÉÈẺẼẸÊẾỀỂỄỆÍÌỈĨỊÓÒỎÕỌÔỐỒỔỖỘƠỚỜỞỠỢÚÙỦŨỤƯỨỪỬỮỰÝỲỶỸỴĐ"

(ui trời, viết lên đây nó lại biến hết thành chữ rõ ràng thế này rồi. thôi, tham khảo VNVowels ở cái link phía dưới nhé)

VNI cung tương tự thôi.
Các bạn có thể tham khảo các Vowels tại đây

(Nhớ rename .zzip thành .zip nhé)
 
Sửa lần cuối:

Thành viên trực tuyến

  • xediengiatot

Xem nhiều