Проблема в том, что функция escape () не принимает во внимание UTF-8. Функция, которую вы хотите для кодирования строки запроса с использованием UTF-8: encodeURIComponent () .
Итак, допустим, у вас есть «ñ» (eñe по-испански или n плюс тильда). Я использую «ñ», потому что я помню как его кодовую точку, так и его представление UTF-8, поскольку я всегда использую его для отладки, но то же самое относится и к другим не-ASCII, не буквенно-цифровым числам.
Скажем, у вас есть строка "Año" (кстати, "год" на испанском языке).
Кодовые точки (как в Unicode, так и в iso-8859-1):
A: 0x41
ñ: 0xf1
o: 0x6f
Если вы вызовете escape (), вы получите это:
A: A
ñ: %F1
o: o
«A» и «o» не нужно кодировать. «Ñ» кодируется как «%» плюс его кодовая точка, которая равна 0xf1.
Но, твиттер, фейсбук и т. Д. Ожидают UTF-8. 0xf1 не является допустимой последовательностью UTF-8 и должна быть представлена 2-байтовой последовательностью. Значение «ñ» должно быть закодировано как:
0xC3
0xB1
Это то, что делает encodeURIComponent. Он будет кодировать «año» следующим образом:
A: A
ñ: %C3
%B1
o: o
Итак, подведем итог, вместо этого:
var link:URLRequest = new URLRequest( url + escape(message) );
попробуйте это
var link:URLRequest = new URLRequest( url + encodeURIComponent(message) );
И все должно работать нормально.