У меня есть греческий текст на строке в Dart с использованием Polymer, почему он неправильно отображается в браузере?

У меня есть следующая строка в моем коде Dart с использованием Polymer:

@observable String title = "Καλώς Ήρθατε Ξανά!";

Но вот что я вижу в браузере:

Καλώς ΉÏθατε Ξανά!

Что мне не хватает?

Когда в тексте используются обычные латинские символы, все идеально.

Спасибо вперед


person GV3    schedule 01.04.2014    source источник
comment
Вы можете взглянуть на этот вопрос stackoverflow.com/questions/20868296.   -  person Günter Zöchbauer    schedule 01.04.2014
comment
@Gunter: Как этот вопрос относится к моей проблеме? Может быть, вы можете указать мне, как он решает, используя нелатинские символы в этом примере.   -  person GV3    schedule 02.04.2014
comment
Извините, это был не тот вопрос, который я хотел связать. Был вопрос о персонажах из Восточной Европы, вероятно, с той же проблемой, что и у вас, но я не могу найти ее сейчас. Но я предложил то же решение, что и в связанном вопросе, и, насколько я помню, оно решило проблему. Предлагаемое решение использует полимерный элемент <safe-html> для добавления строки с использованием внутреннего nodes.add(fragment), который обрабатывает кодировку, отличную от {{...}}. Вместо {{title}} пишешь <safe-html model="{{title}}></safe-html>. Весь необходимый код указан в ответе.   -  person Günter Zöchbauer    schedule 02.04.2014
comment
Это был фактический вопрос: stackoverflow.com/questions/21134778 Это уже сработало, но, похоже, снова ошибка в Dartium, как и в @ Ответ GV3.   -  person Günter Zöchbauer    schedule 03.04.2014


Ответы (3)


Попробуй это:

Импорт:

import 'dart:convert' show UTF8;

Код:

List<int> encoded = UTF8.encode('Καλώς Ήρθατε Ξανά!');
@observable String title = UTF8.decode(encoded);

Короткий код:

@observable String title = UTF8.decode(UTF8.encode('Καλώς Ήρθατε Ξανά!'));

Это должно кодировать вашу строку как UTF8, чтобы она правильно отображалась на экране.

person Akshay Kalose    schedule 01.04.2014
comment
Кажется, что UTF.encode(String input) возвращает List‹int›. Выдает ошибку = значение типа "List‹int›" не может быть присвоено переменной типа "String" - person GV3; 01.04.2014
comment
Также попытка получить первый потомок списка ни к чему не приводит... потому что это List‹int›, а не List‹String› Но я твердо верил, что где-то есть преобразователь, который мне поможет. - person GV3; 01.04.2014
comment
Теперь у меня нет ошибки относительно энкодера... но результат на экране все тот же: - person GV3; 01.04.2014
comment
В заголовке вашего html добавьте это: <meta charset="UTF-8"> - person Akshay Kalose; 01.04.2014
comment
У меня уже был <meta charset="UTF-8"> на теге <head> - person GV3; 01.04.2014
comment
Итак, у меня было ощущение, что что-то не так... и что проблема может быть только тогда, когда я запускаю его в Dartium, поэтому я решил запустить его как JS, и он работал так, как я изначально написал. Без необходимости какой-либо кодировки или чего-то еще, просто с помощью String. Затем я запустил версию JS в браузере Chromium просто для проверки... и это ТАКЖЕ РАБОТАЛО! Поэтому я полагаю, что ошибка связана с запуском в Dartium. Есть идеи по этому поводу? - person GV3; 02.04.2014
comment
@GV3 Это должно быть ошибка в Dartium, я нашел это: код . google.com/p/dart/issues/detail?id=14948 - person Akshay Kalose; 02.04.2014

У меня была такая же проблема с французским языком. Установите кодировку в заголовок файла HTML (по умолчанию ISO-8859-1).

Короткий:

<meta charset="utf-8">

Длинный:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Это должно решить эту проблему. Кстати, все строки в Dart уже в UTF8.

person Eric Taix    schedule 02.04.2014
comment
Извините, @eric, но это не решило проблему. Я считаю, что упомянутая ранее ОШИБКА по-прежнему является причиной... - person GV3; 03.04.2014

Нравится комментарий @Akshay к его ответу:

Это должно быть ошибка в Dartium, я нашел это: code.google.com/p/dart/issues/detail?id=14948

Я запустил его как JS, и греческая строка отобразилась правильно. (Без необходимости какой-либо кодировки или чего-то еще, только со строкой).

Итак, я запустил версию JS в браузере Chromium просто для проверки... возможно, это проблема браузера.... но ТАКЖЕ РАБОТАЛО!

Решение: решения нет... ЭТО ошибка в Dartium (см. ссылку выше).

person GV3    schedule 02.04.2014