locked
Вывод символов Unicode в TextBlock RRS feed

  • Вопрос

  • Здравствуйте!

    Хочу вывести спецсимволы в компонент TextBlock, к счастью особо стараться не надо, выводится отлично, Вот пример.

    <TextBlock FontSize="28" Style="{StaticResource paragraphStyle}">&#1170; &#1171; &#1256; &#1257; &#1240; &#1241; &#1176; &#1177; &#1184; &#1185; &#1194; &#1195; &#1210; &#1211; &#1225; &#1226; &#1198; &#1199;</TextBlock>

     

    НО при программном выводе символов в TextBlock преобразования не происходит,

    например:

    string s="&#1257;&#1177;";

    TextBlock1.Text=s;

    Помогите, пожалуйста!

    Спасибо!

    17 ноября 2011 г. 13:00

Ответы

  • Я нашел решение!

    :-))))))))))))))))))))))))))))))))))))))))))))))))))))

     Вот пример:

    string sss = "- Ал"+(char)1211+"ыу, был ним"+(char)1241+"?";

    button2.Content=sss;

     

    18 ноября 2011 г. 18:12

Все ответы

  •  

    string s = '\u1257' + '\u1177';
    

    • Предложено в качестве ответа PetrishkoMVP 17 ноября 2011 г. 14:06
    17 ноября 2011 г. 13:24
  • Или можно сразу задавать строкой
    textBlock1.Text = "\u1257\u1177";
    


    Для связи [mail]
    • Предложено в качестве ответа PetrishkoMVP 17 ноября 2011 г. 15:48
    17 ноября 2011 г. 14:18
  • Не работает, пишет либо квадратики, либо каракули.

    В этом примере одинарные кавычки не подходят, т.к. это строка, а не символ.

     string s = '\u1257' + '\u1177';

    Может перед использованием символов надо как-то задать кодировку для TextBox?

    18 ноября 2011 г. 15:02
  • Нашел такой пример на msdn
    char[] chars = new char[4];

    chars[0] = 'X';        // Character literal
    chars[1] = '\x0058';   // Hexadecimal
    chars[2] = (char)88;   // Cast from integral type
    chars[3] = '\u0058';   // Unicode

    foreach (char c in chars)
    {
        Console.Write(c + " ");
    }
    // Output: X X X X
    Значит символ можно вывести 3-мя способами. сделал следующий пример:
     
                 char[] chars = new char[18];
                chars[0] = (char)1170;
                chars[1]=(char)1171;
                chars[2]=(char)1176;
                chars[3]=(char)1177;
                chars[4]=(char)1184;
                chars[5]=(char)1185;
                chars[6]=(char)1194;
                chars[7]=(char)1195;
                chars[8]=(char)1198;
                chars[9] = (char)1199;
                chars[10]=(char)1210;
                chars[11]=(char)1211;
                chars[12]=(char)1225;
                chars[13]=(char)1226;
                chars[14]=(char)1240;
                chars[15]=(char)1241;
                chars[16]=(char)1256;
                chars[17]=(char)1257;
                textBlock1.Text = "";
                foreach (char c in chars)
                {
                   textBlock1.Text+=(c + " ");
                }
    ВСЕ РАБОТАЕТ. Но я же буду работать со строками, неужели придется делать вставки в строку на те места, где нужно вывести символы? Может подскажете идею.
     
    2.
    Еще пример:
                string sss = "- Лариса, был ним\u1241?";
                char ss = (char)1199; //'\u1199';
                button1.Content = ss;
                button2.Content=sss;
     
    button1 выведет символ нормально
    button2 выведет квадратик.
     
    В чем же особенность при работе с unicode-сиволами в WP7?
     
    3.
    Нашел такую альтернативу
                string sss=string.Format("- Лариса, был ним{0}?",(char)1241);
                MessageBox.Show(sss);
    Но Такой вариант мне не подходит. Предложите, если не сложно вариант.
    Мне хочется писать так string s="- Лариса, был ним\u1241?"
    Спасибо.
    18 ноября 2011 г. 15:34
  • Я нашел решение!

    :-))))))))))))))))))))))))))))))))))))))))))))))))))))

     Вот пример:

    string sss = "- Ал"+(char)1211+"ыу, был ним"+(char)1241+"?";

    button2.Content=sss;

     

    18 ноября 2011 г. 18:12