HTMLgen und Umlaute

Martin von Loewis martin at mira.isdn.cs.tu-berlin.de
Mon Mar 17 02:31:50 EST 1997


Status: RO

> Beigefügt? Hier kam nichts an.

Oops. Eigentlich meinte ich:

"Converter module from strings to HTML entities"
---------------SCHNIPP-------------------------
from htmlentitydefs import entitydefs

EntitiesByOrd={}
for (k,v) in entitydefs.items():
    EntitiesByOrd[ord(v)]=k

def toHTML(s):
    pos=start=0
    result=""
    flush=0
    while pos<len(s):
	c=ord(s[pos])
	if EntitiesByOrd.has_key(c):
	    flush=1
	    item="&"+EntitiesByOrd[c]+";"
	elif c<32 or c>128:
	    flush=1
	    item="&#"+str(c)+";"
	if flush:
	    result=result+s[start:pos]+item
	    start=pos+1
	    flush=0
	pos=pos+1
    result=result+s[start:pos]
    return result
-----------------SCHNAPP----------------------

Zum Ausgleich hier noch ein Pythondictionary, das den Mac-Zeichensatz 
in Unicode umsetzt - links die Mac-Zeichen, rechts Unicode. Wenn man 8859-1
will, muss man lediglich will die Zeichen über 255 ignorieren.
Insgesamt erhält man dann die Map, die von Mac-Zeichen auf HTML abbildet,
mit

EntitiesByOrd={}
for (k,v) in entitydefs.items():
    EntitiesByOrd[ord(v)]=k

mac2HTML={}
for (k,v) in mac2uni.items():
    if EntitiesByOrd.has_key(v):     #besondere entity
       mac2HTML[k]=EntitiesByOrd[v]
       continue
    if k==v: continue                #kein Unterschied: ASCII
    mac2HTML[k]='#'+str(v)

In diesem Dictionary sind die Mac-Zeichen, die außerhalb von 8859-1 liegen, 
bereits durch die entsprechenden Unicode-Markups ersetzt 
(etwa A0=U2020: DAGGER wird zu &#8224;) - die Browser werden heutzutage 
damit wohl noch Schwierigkeiten haben.

Ciao,
Martin

P.S. Ach ja, die Tabelle. Sie ist eigentlich für wstring gedacht; man kann
aber mac2uni leicht erkennen. Die seltsame Reihefolge liegt daran, daß sie
automatisch generiert wurde (mit process_charmap).

import wstring
#Aliases for MACINTOSH
wstring.install_alias('MAC','MACINTOSH')
#Mapping
wstring.install_encoding_map('MACINTOSH',{

0x0A: 0x000A, 0x96: 0x00F1, 0x97: 0x00F3, 0x94: 0x00EE, 0x95: 0x00EF,
0x92: 0x00ED, 0x0F: 0x000F, 0x90: 0x00EA, 0x91: 0x00EB, 0x98: 0x00F2,
0x99: 0x00F4, 0xCB: 0x00C0, 0x30: 0x0030, 0x31: 0x0031, 0x32: 0x0032,
0x33: 0x0033, 0x34: 0x0034, 0x35: 0x0035, 0x36: 0x0036, 0x37: 0x0037,
0x38: 0x0038, 0x39: 0x0039, 0xCE: 0x0152, 0xCF: 0x0153, 0x1F: 0x001F,
0x1D: 0x001D, 0x1E: 0x001E, 0x1B: 0x001B, 0x1C: 0x001C, 0x1A: 0x001A,
0xD6: 0x00F7, 0xEB: 0x00CE, 0xEC: 0x00CF, 0xEA: 0x00CD, 0xEF: 0x00D4,
0xED: 0x00CC, 0xEE: 0x00D3, 0xBF: 0x00F8, 0xAD: 0x2260, 0xB3: 0x2265,
0xD9: 0x0178, 0xAE: 0x00C6, 0xB2: 0x2264, 0xD8: 0x00FF, 0xAB: 0x00B4,
0xF5: 0x0131, 0xB0: 0x221E, 0x9F: 0x00FC, 0xB1: 0x00B1, 0x9D: 0x00F9,
0x9E: 0x00FB, 0x9B: 0x00F5, 0x9C: 0x00FA, 0xB4: 0x00A5, 0x9A: 0x00F6,
0xF3: 0x00DB, 0xB9: 0x03C0, 0xB6: 0x2202, 0xB5: 0x00B5, 0x78: 0x0078,
0x79: 0x0079, 0xD7: 0x25C6, 0x74: 0x0074, 0x75: 0x0075, 0x76: 0x0076,
0x77: 0x0077, 0x70: 0x0070, 0x71: 0x0071, 0x72: 0x0072, 0x73: 0x0073,
0xBC: 0x00BA, 0xBB: 0x00AA, 0xBA: 0x222B, 0x0C: 0x000C, 0x18: 0x0018,
0x19: 0x0019, 0x16: 0x0016, 0x17: 0x0017, 0x14: 0x0014, 0x15: 0x0015,
0x12: 0x0012, 0x13: 0x0013, 0x10: 0x0010, 0x11: 0x0011, 0xE8: 0x00CB,
0x0D: 0x000D, 0xE2: 0x201A, 0xE3: 0x201E, 0xE0: 0x2021, 0x93: 0x00EC,
0xB8: 0x220F, 0xE7: 0x00C1, 0xE4: 0x2030, 0xE5: 0x00C2, 0x45: 0x0045,
0x44: 0x0044, 0x47: 0x0047, 0x46: 0x0046, 0x41: 0x0041, 0x40: 0x0040,
0x43: 0x0043, 0x42: 0x0042, 0x49: 0x0049, 0x48: 0x0048, 0xCC: 0x00C3,
0xCD: 0x00D5, 0x4E: 0x004E, 0x4D: 0x004D, 0xDA: 0x2044, 0x4F: 0x004F,
0x4A: 0x004A, 0x4C: 0x004C, 0x4B: 0x004B, 0xDE: 0xFB01, 0xDD: 0x203A,
0xDF: 0xFB02, 0x7D: 0x007D, 0x7E: 0x007E, 0x7F: 0x007F, 0x7A: 0x007A,
0x7B: 0x007B, 0x7C: 0x007C, 0xDC: 0x2039, 0xDB: 0x00A4, 0x58: 0x0058,
0x59: 0x0059, 0x52: 0x0052, 0x53: 0x0053, 0x50: 0x0050, 0x51: 0x0051,
0x56: 0x0056, 0x57: 0x0057, 0x54: 0x0054, 0x55: 0x0055, 0xC0: 0x00BF,
0xC1: 0x00A1, 0xC2: 0x00AC, 0xC3: 0x221A, 0xC4: 0x0192, 0xC5: 0x2248,
0xC6: 0x0394, 0xC7: 0x00AB, 0xC8: 0x00BB, 0xC9: 0x2026, 0x8A: 0x00E4,
0x8C: 0x00E5, 0x8B: 0x00E3, 0x8E: 0x00E9, 0x8D: 0x00E7, 0x8F: 0x00E8,
0xBD: 0x03A9, 0xCA: 0x00A0, 0x81: 0x00C5, 0x80: 0x00C4, 0x83: 0x00C9,
0x82: 0x00C7, 0x85: 0x00D6, 0x84: 0x00D1, 0x87: 0x00E1, 0x86: 0x00DC,
0x89: 0x00E2, 0x88: 0x00E0, 0x0B: 0x000B, 0xF8: 0x00AF, 0x0E: 0x000E,
0x23: 0x0023, 0x22: 0x0022, 0x21: 0x0021, 0x20: 0x0020, 0x27: 0x0027,
0x26: 0x0026, 0x25: 0x0025, 0x24: 0x0024, 0x29: 0x0029, 0x28: 0x0028,
0xE9: 0x00C8, 0x2C: 0x002C, 0x2B: 0x002B, 0x2A: 0x002A, 0xAF: 0x00D8,
0xF9: 0x02D8, 0x2F: 0x002F, 0x2E: 0x002E, 0x2D: 0x002D, 0xAC: 0x00A8,
0xF4: 0x00D9, 0xAA: 0x2122, 0xF2: 0x00DA, 0xF1: 0x00D2, 0xF0: 0xE01E,
0xFF: 0x02C7, 0xFE: 0x02DB, 0xFD: 0x02DD, 0xFC: 0x00B8, 0xFB: 0x02DA,
0xFA: 0x02D9, 0xE1: 0x00B7, 0xE6: 0x00CA, 0x5B: 0x005B, 0x5C: 0x005C,
0x5A: 0x005A, 0x5F: 0x005F, 0x5D: 0x005D, 0x5E: 0x005E, 0x3A: 0x003A,
0x3B: 0x003B, 0x3C: 0x003C, 0x3D: 0x003D, 0x3E: 0x003E, 0x3F: 0x003F,
0xB7: 0x2211, 0xA8: 0x00AE, 0xA9: 0x00A9, 0xA6: 0x00B6, 0xA7: 0x00DF,
0xA4: 0x00A7, 0xA5: 0x2022, 0xA2: 0x00A2, 0xA3: 0x00A3, 0xA0: 0x2020,
0xA1: 0x00B0, 0x6F: 0x006F, 0x6E: 0x006E, 0x6D: 0x006D, 0x6C: 0x006C,
0x6B: 0x006B, 0x6A: 0x006A, 0xBE: 0x00E6, 0x69: 0x0069, 0x68: 0x0068,
0x67: 0x0067, 0x66: 0x0066, 0x65: 0x0065, 0x64: 0x0064, 0x63: 0x0063,
0x62: 0x0062, 0x61: 0x0061, 0x60: 0x0060, 0xD5: 0x2019, 0xD4: 0x2018,
0x09: 0x0009, 0x08: 0x0008, 0xD1: 0x2013, 0xD0: 0x2014, 0xD3: 0x201D,
0xD2: 0x201C, 0x01: 0x0001, 0x00: 0x0000, 0x03: 0x0003, 0x02: 0x0002,
0x05: 0x0005, 0x04: 0x0004, 0x07: 0x0007, 0x06: 0x0006,
})


______________________________________________________________
   python-de          the German Python mailing list
send messages to:   <mailto:python-de at solar.skyport.net>
list manager: <mailto:owner-python-de at solar.skyport.net>
______________________________________________________________



More information about the Python-de mailing list