using System.Globalization;
public static void Main()
string accentedText = "Você está numa situação lamentável";
Console.WriteLine(accentedText);
Console.WriteLine(accentedText.RemoveDiacritics());
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(accentedText.RemoveAcentuationThroughGreek());
public static class Utility
public static void PrintEncodings(){
Console.Write( "Info.CodePage " );
Console.Write( "Info.Name " );
Console.Write( "Info.DisplayName" );
foreach( EncodingInfo ei in Encoding.GetEncodings() ) {
Encoding e = ei.GetEncoding();
Console.Write( "{0,-15}", ei.CodePage );
if ( ei.CodePage == e.CodePage )
Console.Write( "{0,-25}", ei.Name );
if ( ei.CodePage == e.CodePage )
Console.Write( "{0,-25}", ei.DisplayName );
if ( ei.CodePage == e.CodePage )
public static string RemoveDiacritics(this string str)
if (null == str) return null;
from c in str.Normalize(NormalizationForm.FormD).ToCharArray()
let uc = CharUnicodeInfo.GetUnicodeCategory(c)
where uc != UnicodeCategory.NonSpacingMark
var cleanStr = new string(chars.ToArray()).Normalize(NormalizationForm.FormC);
public static string RemoveDiacritics2(this string str)
if (null == str) return null;
.Normalize(NormalizationForm.FormD)
.Where(c=> CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
return new string(chars).Normalize(NormalizationForm.FormC);
public static string RemoveAcentuationThroughGreek(this string text)
System.Web.HttpUtility.UrlDecode(
System.Web.HttpUtility.UrlEncode(
text, Encoding.GetEncoding("iso-8859-7")));