# Regex to find any control chars, except for \t \n and \r
_controlCharPat =re.compile(r"[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f"
r"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]")def_escapeAndEncode(text):
m =_controlCharPat.search(text)if m isnotNone:
raiseValueError("strings can't contains control characters; ""use plistlib.Data instead")
text =text.replace("\r\n", "\n")# convert DOS line endings
text =text.replace("\r", "\n")# convert Mac line endings
text =text.replace("&", "&")# escape '&'
text =text.replace("<", "<")# escape '<'
text =text.replace(">", ">")# escape '>'
returntext.encode("utf-8")# encode as UTF-8