Skip to content

Instantly share code, notes, and snippets.

@ntdat017
Last active May 3, 2022 02:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ntdat017/7338be9809f0274100de843455dfc8cc to your computer and use it in GitHub Desktop.
Save ntdat017/7338be9809f0274100de843455dfc8cc to your computer and use it in GitHub Desktop.
Function Tranform Unicode Compound to Unicode (UTF-8) of Vietnamese character. Read more about charset in vnese at http://vietunicode.sourceforge.net/charset/vietcharset.html
import os
import io
def compound_unicode(unicode_str):
"""
Tranform Unicode Compound to Unicode (UTF-8).
Chuyển đổi chuỗi Unicode Tổ Hợp sang Unicode UTF-8.
Edited from: https://gist.github.com/anhtran/d317a2c52b015bb243fd262f1cad0e4f
"""
unicode_str = unicode_str.replace("e\xd2", "\u1EBB") # ẻ
unicode_str = unicode_str.replace("e\xec", "\u00E9") # é
unicode_str = unicode_str.replace("e\xcc", "\u00E8") # è
unicode_str = unicode_str.replace("e\xf2", "\u1EB9") # ẹ
unicode_str = unicode_str.replace("e\xde", "\u1EBD") # ẽ
unicode_str = unicode_str.replace("\xea\xd2", "\u1EC3") # ể
unicode_str = unicode_str.replace("\xea\xec", "\u1EBF") # ế
unicode_str = unicode_str.replace("\xea\xcc", "\u1EC1") # ề
unicode_str = unicode_str.replace("\xea\xf2", "\u1EC7") # ệ
unicode_str = unicode_str.replace("\xea\xde", "\u1EC5") # ễ
unicode_str = unicode_str.replace("\xea", "\u00EA") # ê
unicode_str = unicode_str.replace("y\xd2", "\u1EF7") # ỷ
unicode_str = unicode_str.replace("y\xec", "\u00FD") # ý
unicode_str = unicode_str.replace("y\xcc", "\u1EF3") # ỳ
unicode_str = unicode_str.replace("y\xf2", "\u1EF5") # ỵ
unicode_str = unicode_str.replace("y\xde", "\u1EF9") # ỹ
unicode_str = unicode_str.replace("u\xd2", "\u1EE7") # ủ
unicode_str = unicode_str.replace("u\xec", "\u00FA") # ú
unicode_str = unicode_str.replace("u\xcc", "\u00F9") # ù
unicode_str = unicode_str.replace("u\xf2", "\u1EE5") # ụ
unicode_str = unicode_str.replace("u\xde", "\u0169") # ũ
unicode_str = unicode_str.replace("\xfd\xd2", "\u1EED") # ử
unicode_str = unicode_str.replace("\xfd\xec", "\u1EE9") # ứ
unicode_str = unicode_str.replace("\xfd\xcc", "\u1EEB") # ừ
unicode_str = unicode_str.replace("\xfd\xf2", "\u1EF1") # ự
unicode_str = unicode_str.replace("\xfd\xde", "\u1EEF") # ữ
unicode_str = unicode_str.replace("\xfd", "\u01B0") # ư
unicode_str = unicode_str.replace("i\xd2", "\u1EC9") # ỉ
unicode_str = unicode_str.replace("i\xec", "\u00ED") # í
unicode_str = unicode_str.replace("i\xcc", "\u00EC") # ì
unicode_str = unicode_str.replace("i\xf2", "\u1ECB") # ị
unicode_str = unicode_str.replace("i\xde", "\u0129") # ĩ
unicode_str = unicode_str.replace("o\xd2", "\u1ECF") # ỏ
unicode_str = unicode_str.replace("o\xec", "\u00F3") # ó
unicode_str = unicode_str.replace("o\xcc", "\u00F2") # ò
unicode_str = unicode_str.replace("o\xf2", "\u1ECD") # ọ
unicode_str = unicode_str.replace("o\xde", "\u00F5") # õ
unicode_str = unicode_str.replace("\xf5\xd2", "\u1EDF") # ở
unicode_str = unicode_str.replace("\xf5\xec", "\u1EDB") # ớ
unicode_str = unicode_str.replace("\xf5\xcc", "\u1EDD") # ờ
unicode_str = unicode_str.replace("\xf5\xf2", "\u1EE3") # ợ
unicode_str = unicode_str.replace("\xf5\xde", "\u1EE1") # ỡ
unicode_str = unicode_str.replace("\xf5", "\u01A1") # ơ
unicode_str = unicode_str.replace("\xf4\xd2", "\u1ED5") # ổ
unicode_str = unicode_str.replace("\xf4\xec", "\u1ED1") # ố
unicode_str = unicode_str.replace("\xf4\xcc", "\u1ED3") # ồ
unicode_str = unicode_str.replace("\xf4\xf2", "\u1ED9") # ộ
unicode_str = unicode_str.replace("\xf4\xde", "\u1ED7") # ỗ
unicode_str = unicode_str.replace("\xf4", "\u00F4") # ô
unicode_str = unicode_str.replace("a\xd2", "\u1EA3") # ả
unicode_str = unicode_str.replace("a\xec", "\u00E1") # á
unicode_str = unicode_str.replace("a\xcc", "\u00E0") # à
unicode_str = unicode_str.replace("a\xf2", "\u1EA1") # ạ
unicode_str = unicode_str.replace("a\xde", "\u00E3") # ã
unicode_str = unicode_str.replace("\xe3\xd2", "\u1EB3") # ẳ
unicode_str = unicode_str.replace("\xe3\xec", "\u1EAF") # ắ
unicode_str = unicode_str.replace("\xe3\xcc", "\u1EB1") # ằ
unicode_str = unicode_str.replace("\xe3\xf2", "\u1EB7") # ặ
unicode_str = unicode_str.replace("\xe3\xde", "\u1EB5") # ẵ
unicode_str = unicode_str.replace("\xe3", "\u0103") # ă
unicode_str = unicode_str.replace("\xe2\xd2", "\u1EA9") # ẩ
unicode_str = unicode_str.replace("\xe2\xec", "\u1EA5") # ấ
unicode_str = unicode_str.replace("\xe2\xcc", "\u1EA7") # ầ
unicode_str = unicode_str.replace("\xe2\xf2", "\u1EAD") # ậ
unicode_str = unicode_str.replace("\xe2\xde", "\u1EAB") # ẫ
unicode_str = unicode_str.replace("\xe2", "\u00E2") # â
unicode_str = unicode_str.replace("E\xd2", "\u1EBA") # Ẻ
unicode_str = unicode_str.replace("E\xec", "\u00C9") # É
unicode_str = unicode_str.replace("E\xcc", "\u00C8") # È
unicode_str = unicode_str.replace("E\xf2", "\u1EB8") # Ẹ
unicode_str = unicode_str.replace("E\xde", "\u1EBC") # Ẽ
unicode_str = unicode_str.replace("\xca\xd2", "\u1EC2") # Ể
unicode_str = unicode_str.replace("\xca\xec", "\u1EBE") # Ế
unicode_str = unicode_str.replace("\xca\xcc", "\u1EC0") # Ề
unicode_str = unicode_str.replace("\xca\xf2", "\u1EC6") # Ệ
unicode_str = unicode_str.replace("\xca\xde", "\u1EC4") # Ễ
unicode_str = unicode_str.replace("\xca", "\u00CA") # Ê
unicode_str = unicode_str.replace("Y\xd2", "\u1EF6") # Ỷ
unicode_str = unicode_str.replace("Y\xec", "\u00DD") # Ý
unicode_str = unicode_str.replace("Y\xcc", "\u1EF2") # Ỳ
unicode_str = unicode_str.replace("Y\xf2", "\u1EF4") # Ỵ
unicode_str = unicode_str.replace("Y\xde", "\u1EF8") # Ỹ
unicode_str = unicode_str.replace("U\xd2", "\u1EE6") # Ủ
unicode_str = unicode_str.replace("U\xec", "\u00DA") # Ú
unicode_str = unicode_str.replace("U\xcc", "\u00D9") # Ù
unicode_str = unicode_str.replace("U\xf2", "\u1EE4") # Ụ
unicode_str = unicode_str.replace("U\xde", "\u0168") # Ũ
unicode_str = unicode_str.replace("\xdd\xd2", "\u1EEC") # Ử
unicode_str = unicode_str.replace("\xdd\xec", "\u1EE8") # Ứ
unicode_str = unicode_str.replace("\xdd\xcc", "\u1EEA") # Ừ
unicode_str = unicode_str.replace("\xdd\xf2", "\u1EF0") # Ự
unicode_str = unicode_str.replace("\xdd\xde", "\u1EEE") # Ữ
unicode_str = unicode_str.replace("\xdd", "\u01AF") # Ư
unicode_str = unicode_str.replace("I\xd2", "\u1EC8") # Ỉ
unicode_str = unicode_str.replace("I\xec", "\u00CD") # Í
unicode_str = unicode_str.replace("I\xcc", "\u00CC") # Ì
unicode_str = unicode_str.replace("I\xf2", "\u1ECA") # Ị
unicode_str = unicode_str.replace("I\xde", "\u0128") # Ĩ
unicode_str = unicode_str.replace("O\xd2", "\u1ECE") # Ỏ
unicode_str = unicode_str.replace("O\xec", "\u00D3") # Ó
unicode_str = unicode_str.replace("O\xcc", "\u00D2") # Ò
unicode_str = unicode_str.replace("O\xf2", "\u1ECC") # Ọ
unicode_str = unicode_str.replace("O\xde", "\u00D5") # Õ
unicode_str = unicode_str.replace("\xd5\xd2", "\u1EDE") # Ở
unicode_str = unicode_str.replace("\xd5\xec", "\u1EDA") # Ớ
unicode_str = unicode_str.replace("\xd5\xcc", "\u1EDC") # Ờ
unicode_str = unicode_str.replace("\xd5\xf2", "\u1EE2") # Ợ
unicode_str = unicode_str.replace("\xd5\xde", "\u1EE0") # Ỡ
unicode_str = unicode_str.replace("\xd5", "\u01A0") # Ơ
unicode_str = unicode_str.replace("\xd4\xd2", "\u1ED4") # Ổ
unicode_str = unicode_str.replace("\xd4\xec", "\u1ED0") # Ố
unicode_str = unicode_str.replace("\xd4\xcc", "\u1ED2") # Ồ
unicode_str = unicode_str.replace("\xd4\xf2", "\u1ED8") # Ộ
unicode_str = unicode_str.replace("\xd4\xde", "\u1ED6") # Ỗ
unicode_str = unicode_str.replace("\xd4", "\u00D4") # Ô
unicode_str = unicode_str.replace("A\xd2", "\u1EA2") # Ả
unicode_str = unicode_str.replace("A\xec", "\u00C1") # Á
unicode_str = unicode_str.replace("A\xcc", "\u00C0") # À
unicode_str = unicode_str.replace("A\xf2", "\u1EA0") # Ạ
unicode_str = unicode_str.replace("A\xde", "\u00C3") # Ã
unicode_str = unicode_str.replace("\xc3\xd2", "\u1EB2") # Ẳ
unicode_str = unicode_str.replace("\xc3\xec", "\u1EAE") # Ắ
unicode_str = unicode_str.replace("\xc3\xcc", "\u1EB0") # Ằ
unicode_str = unicode_str.replace("\xc3\xf2", "\u1EB6") # Ặ
unicode_str = unicode_str.replace("\xc3\xde", "\u1EB4") # Ẵ
unicode_str = unicode_str.replace("\xc3", "\u0102") # Ă
unicode_str = unicode_str.replace("\xc2\xd2", "\u1EA8") # Ẩ
unicode_str = unicode_str.replace("\xc2\xec", "\u1EA4") # Ấ
unicode_str = unicode_str.replace("\xc2\xcc", "\u1EA6") # Ầ
unicode_str = unicode_str.replace("\xc2\xf2", "\u1EAC") # Ậ
unicode_str = unicode_str.replace("\xc2\xde", "\u1EAA") # Ẫ
unicode_str = unicode_str.replace("\xc2", "\u00C2") # Â
unicode_str = unicode_str.replace("\xf0", "\u0111") # đ
unicode_str = unicode_str.replace("\xd0", "\u0110") # Đ
return unicode_str
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment