EucEncode( p_data, p_reserved=true, p_encode=true ) { old_FormatInteger := A_FormatInteger SetFormat, Integer, hex unsafe = ( Join LTrim 25000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20 22233C3E5B5C5D5E607B7C7D7F808182838485868788898A8B8C8D8E8F9091929394 95969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6 B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8 D9DADBDCDDDEDF7EE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9 FAFBFCFDFEFF ) if ( p_reserved ) unsafe = %unsafe%24262B2C2F3A3B3D3F40 if ( p_encode ) loop, % StrLen( unsafe )//2 { StringMid, token, unsafe, A_Index*2-1, 2 StringReplace, p_data, p_data, % Chr( "0x" token ), `%%token%, all } else loop, % StrLen( unsafe )//2 { StringMid, token, unsafe, A_Index*2-1, 2 StringReplace, p_data, p_data, `%%token%, % Chr( "0x" token ), all } SetFormat, Integer, %old_FormatInteger% return, p_data } EucDecode( p_data ) { return, EucEncode( p_data, true, false ) }