return value;
}
+ public string unescape_unicode (string s) {
+ string result = "";
+ int i, j;
+ long l = s.length;
+
+ for (i = 0; i < l; i++) {
+ if (s[i] == '&' && s[i + 1] == '#') {
+ for (j = i + 2; j < l; j++) {
+ if (!s[j].isdigit ())
+ break;
+ if (s[j] == ';')
+ break;
+ }
+ if (s[j] == ';') {
+ int codepoint = s.substring (i + 2, j - i - 2).to_int ();
+ char[] buf = new char[6];
+ ((unichar) codepoint).to_utf8 ((string) buf);
+ result += (string) buf;
+ i = j;
+ continue;
+ }
+ }
+ result += s.substring (i, 1);
+ }
+
+ return result;
+ }
+
public void parse_movie () throws Error {
expect_tag ("div"); // class=movie
expect_tag ("div"); // class=name
expect_tag ("a"); // href="/movies?near=city&mid=..."
expect_tag ("span"); // dir=ltr
- var title = convert (parse_text ().replace ("'", "'").replace ("&", "&"), -1, "utf-8", "iso-8859-1"); // FIXME
+ var title = unescape_unicode (convert (parse_text (), -1, "utf-8", "iso-8859-1")).replace ("&", "&"); // FIXME
expect_tag ("/span");
expect_tag ("/a");
expect_tag ("/div");