Cannot create grid with french title 'Détail'
var res = html
.Kendo()
.Grid<object>()
.Name("Test")
.Columns(x =>
{
var arr = new char[]{(char)68, (char)233, (char)116, (char)97, (char)105, (char)108 };
var strCreated = new string(arr); //"Détail" - get from localization from french
x.Template(string.Empty)
.HtmlAttributes(new {title = strCreated});
});
var ws = res.ToClientTemplate().ToString();
//Détail => D\u0026#xE9;tail
//<div id="Test" name="Test"></div><script>kendo.syncReady(function(){jQuery("\#Test").kendoGrid({"columns":[{"attributes":{"title":"D\u0026#xE9;tail"}}],"scrollable":false,"dataSource":{"type":(function(){if(kendo.data.transports['aspnetmvc-ajax']){return 'aspnetmvc-ajax';} else{throw new Error('The kendo.aspnetmvc.min.js script is not included.');}})(),"transport":{"read":{"url":""},"prefix":""},"schema":{"data":"Data","total":"Total","errors":"Errors","model":{}}}});});<\/script>
That's why cannot parse template on client side.
Code
res.ToComponent().VisibleColumns[0].ToJson()
returns 'Détail' when Framework returns 'Détail'.
Some investigations give me that on Core your code is like
HtmlEncoder encoder = HtmlEncoder.Default;
var arr = new char[]{(char)68, (char)233, (char)116, (char)97, (char)105, (char)108 };
var strCreated = new string(arr); //Détail
var encoded2 = encoder.Encode(strCreated);
//endoded == "Détail"
When old code is like
var arr = new char[] { (char)68, (char)233, (char)116, (char)97, (char)105, (char)108 };
var strCreated = new string(arr); //Détail
string s = HttpUtility.HtmlAttributeEncode(strCreated).Replace(" ", " ").Replace("'", "'");
s = HttpUtility.HtmlDecode(s);
//s == "Détail"