WP7 Extended ASCII Characters

If you want to display a Greek string that you receive from the Web but all you get are characters like %32, %B6 etc you can do the following

Add this class to your project:

using System;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Xml.Linq;

namespace AiaWp7.UI {
    public static class EncoderHelper {
        private static readonly XElement _document = null;
        static EncoderHelper() {
            string path = "Resources/EncodingMap.xml";
            Uri uri = new Uri(path, UriKind.Relative);
            _document = XDocument.Load(Application.GetResourceStream(uri).Stream).Root;
        }

        public static string Decode(string input) {
            if(string.IsNullOrEmpty(input))
                return input;
            StringBuilder sb = new StringBuilder();
            input = input.Replace("%28", "(");
            input = input.Replace("%29", ")");
            input = input.Replace("+", "%+");
            var chars = input.Split(new[] { '%' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var c in chars) {
                var element = _document.Descendants("Char").FirstOrDefault(x => {
                    var xAttribute = x.Attribute("Encoded");
                    return xAttribute != null && xAttribute.Value == c.Trim(new[] { ' ', '.' });
                });
                if (element == null) {
                    sb.Append(c);
                    continue;
                }
                var attribute = element.Attribute("Value");
                if (attribute != null) sb.Append(c.Replace(c.Trim(), attribute.Value));
            }

            return sb.Replace("+", " ").ToString();
        }
    }
}

Add this file to your Resources folder named EncodedMap.xml (If you don’t have one, create)

<?xml version="1.0" encoding="utf-8" ?>
<Encodings>
  <Char Encoded="B6" Value="Α" />
  <Char Encoded="B8" Value="Ε" />
  <Char Encoded="B9" Value="Η" />
  <Char Encoded="BA" Value="Ι" />
  <Char Encoded="BC" Value="Ο" />
  <Char Encoded="BE" Value="Υ" />
  <Char Encoded="BF" Value="Ω" />
  
  <Char Encoded="C1" Value="Α" />
  <Char Encoded="C2" Value="Β" />
  <Char Encoded="C3" Value="Γ" />
  <Char Encoded="C4" Value="Δ" />
  <Char Encoded="C5" Value="Ε" />
  <Char Encoded="C6" Value="Ζ" />
  <Char Encoded="C7" Value="Η" />
  <Char Encoded="C8" Value="Θ" />
  <Char Encoded="C9" Value="Ι" />
  <Char Encoded="CA" Value="Κ" />
  <Char Encoded="CB" Value="Λ" />
  <Char Encoded="CC" Value="Μ" />
  <Char Encoded="CD" Value="Ν" />
  <Char Encoded="CE" Value="Ξ" />
  <Char Encoded="CF" Value="Ο" />
  <Char Encoded="D0" Value="Π" />
  <Char Encoded="D1" Value="Ρ" />
  <Char Encoded="D3" Value="Σ" />
  <Char Encoded="D4" Value="Τ" />
  <Char Encoded="D5" Value="Υ" />
  <Char Encoded="D6" Value="Φ" />
  <Char Encoded="D7" Value="Χ" />
  <Char Encoded="D8" Value="Ψ" />
  <Char Encoded="D9" Value="Ω" />
  <Char Encoded="DA" Value="Ϊ" />
  <Char Encoded="DB" Value="Ϋ" />

  <Char Encoded="DC" Value="ά" />
  <Char Encoded="DD" Value="έ" />  
  <Char Encoded="DE" Value="ή" />
  <Char Encoded="DF" Value="ί" />
  
  


  <Char Encoded="E1" Value="α" />
  <Char Encoded="E2" Value="β" />
  <Char Encoded="E3" Value="γ" />
  <Char Encoded="E4" Value="δ" />
  <Char Encoded="E5" Value="ε" />
  <Char Encoded="E6" Value="ζ" />
  <Char Encoded="E7" Value="η" />
  <Char Encoded="E8" Value="θ" />
  <Char Encoded="E9" Value="ι" />
  <Char Encoded="EA" Value="κ" />
  <Char Encoded="EB" Value="λ" />
  <Char Encoded="EC" Value="μ" />
  <Char Encoded="ED" Value="ν" />
  <Char Encoded="EE" Value="ξ" />
  <Char Encoded="EF" Value="ο" />
  <Char Encoded="F0" Value="π" />
  <Char Encoded="F1" Value="ρ" />
  <Char Encoded="F2" Value="ς" />
  <Char Encoded="F3" Value="σ" />
  <Char Encoded="F4" Value="τ" />
  <Char Encoded="F5" Value="υ" />
  <Char Encoded="F6" Value="φ" />
  <Char Encoded="F7" Value="χ" />
  <Char Encoded="F8" Value="ψ" />
  <Char Encoded="F9" Value="ω" />


  <Char Encoded="FA" Value="ϊ" />
  <Char Encoded="FB" Value="ϋ" />
  <Char Encoded="FC" Value="ό" />
  <Char Encoded="FD" Value="ύ" />
  <Char Encoded="FE" Value="ώ" />



  <Char Encoded="2F" Value="/" />
  <Char Encoded="30" Value="0" />
  <Char Encoded="31" Value="1" />
  <Char Encoded="32" Value="2" />
  <Char Encoded="33" Value="3" />
  <Char Encoded="34" Value="4" />
  <Char Encoded="35" Value="5" />
  <Char Encoded="36" Value="6" />
  <Char Encoded="37" Value="7" />
  <Char Encoded="38" Value="8" />
  <Char Encoded="39" Value="9" />

  <Char Encoded="28" Value="(" />
  <Char Encoded="29" Value=")" />
  <Char Encoded="+" Value=" " />
</Encodings>

And you are all set!

Add a Comment (gravatar-enabled)