2011-10-17 5 views
0

자바 스크립트 기능에 텍스트를 전달하려고합니다.JavaScript 기능에 텍스트 인코딩

hplDetails.NavigateUrl = "JavaScript:GetSpecialEquipmentsDetails('" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentCode + "','" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentName + "')"; 

두 번째 매개 변수에는 악센트, 특수 문자가있는 텍스트가 포함되어 있습니다. 그러나 JavaScript 함수를 사용하면 텍스트가 엉망입니다. 누구든지 나를위한 조언이 있으십니까?

+2

을 C#과 JS에서 텍스트가 어떻게 보이는지 보여 줄 수 있습니까? – Tetaxa

+0

은 C#에서 'Assento para Bebês'입니다. Assento % 20para % 20beb % C3 % 83 .... – mcamara

답변

1

대신 <asp:HyperLink> 같은 일을 가지고 시도 :

<a id="hplDetails" runat="server">Text here</a> 

는 다음과 같은 코드의 URL을 지정 : 희망이 혼란하지 않습니다 당신의 특수 문자

hplDetails.Attributes["href"] = "URL here....."; 

합니다.

1

ASP.NET은 NavigateUrl 속성을 인코딩합니다.

js 기능에서 decodeURI을 사용하십시오.

+0

이제는 사실이지만 악센트는 여전히 'Assento para bebês'로 문제가 있습니다. – mcamara

+0

@tomcamara - 아마도 시도해보십시오. [이스케이프 해제] (http://www.w3schools.com/jsref/jsref_unescape.asp)? –

1

같은라는 클래스에서이 같은 유틸리티 기능을 갖는 StringUtil 말 :

public static string JsEncode(string text) 
{ 
    StringBuilder safe = new StringBuilder(); 
    foreach (char ch in text) 
    { 
     // Hex encode "\xFF" 
     if (ch <= 127) 
      safe.Append("\\x" + ((int)ch).ToString("x2")); 
     // Unicode hex encode "\uFFFF" 
     else 
      safe.Append("\\u" + ((int)ch).ToString("x4")); 
    } 
    return safe.ToString(); 
} 

을 ... 그런 다음 값으로 안전, 자바 스크립트로 인코딩 된 문자열 인코딩 할 수 있습니다 의미 :

hplDetails.NavigateUrl = "JavaScript:GetSpecialEquipmentsDetails('" + StringUtil.JSEncode(((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentCode + "','" + ((SGViagens.Entities.SpecialEquipment)(e.Item.DataItem)).EquipmentName) + "')";