ฉันมีที่อยู่อีเมลที่เข้ารหัสด้วยเอนทิตีอักขระ HTML มีอะไรใน. NET ที่สามารถแปลงเป็นสตริงธรรมดาได้หรือไม่?
ฉันมีที่อยู่อีเมลที่เข้ารหัสด้วยเอนทิตีอักขระ HTML มีอะไรใน. NET ที่สามารถแปลงเป็นสตริงธรรมดาได้หรือไม่?
คำตอบ:
คุณสามารถใช้ได้ HttpUtility.HtmlDecode
หากคุณกำลังใช้. NET 4.0+ คุณสามารถใช้WebUtility.HtmlDecodeซึ่งไม่ต้องการการอ้างอิงแอสเซมบลีพิเศษเนื่องจากมีอยู่ในSystem.Netเนมสเปซ
HttpUtility.UrlDecode
บน. Net 4.0:
System.Net.WebUtility.HtmlDecode()
ไม่จำเป็นต้องมีชุดประกอบสำหรับโครงการ C #
ตามที่ @CQ พูดว่าคุณต้องใช้HttpUtility.HtmlDecodeแต่ไม่สามารถใช้ได้ในโครงการที่ไม่ใช่ ASP .NET ตามค่าเริ่มต้น
สำหรับโปรแกรมประยุกต์ที่ไม่ใช่ ASP .NET System.Web.dllคุณจำเป็นต้องเพิ่มการอ้างอิงถึง คลิกขวาที่โครงการของคุณใน Explorer โซลูชันเลือก "เพิ่มการอ้างอิง" System.Web.dllจากนั้นเรียกดูรายการสำหรับ
หลังจากที่มีการเพิ่มการอ้างอิงคุณควรจะสามารถเข้าถึงวิธีการโดยใช้ชื่อที่ผ่านการรับรองSystem.Web.HttpUtility.HtmlDecodeหรือแทรกusingคำสั่งSystem.Webเพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้น
ใช้Server.HtmlDecodeเพื่อถอดรหัสเอนทิตี HTML หากคุณต้องการที่จะหลบหนี HTML คือแสดง<และตัวละครให้กับผู้ใช้ใช้งาน>Server.HtmlEncode
ในการถอดรหัส HTML ลองดูโค้ดด้านล่าง
string s = "Svendborg Værft A/S";
string a = HttpUtility.HtmlDecode(s);
Response.Write(a);
ผลผลิตก็เหมือนกัน
Svendborg Værft A/S
นอกจากนี้ยังเป็นมูลค่าการกล่าวขวัญว่าถ้าคุณกำลังใช้ HtmlAgilityPack HtmlAgilityPack.HtmlEntity.DeEntitize()เหมือนผมคุณควรใช้ มันต้องใช้เวลาและผลตอบแทนstringstring
เขียนวิธีการแบบสแตติกลงในคลาสยูทิลิตี้บางอย่างซึ่งยอมรับสตริงเป็นพารามิเตอร์และส่งคืนสตริง html ที่ถอดรหัส
รวมusing System.Web.HttpUtilityไว้ในชั้นเรียนของคุณ
public static string HtmlEncode(string text)
{
if(text.length > 0){
return HttpUtility.HtmlDecode(text);
}else{
return text;
}
}
สำหรับ. net 4.0
เพิ่มการอ้างอิงถึงSystem.net.dllโครงการด้วยusing System.Net;จากนั้นใช้ส่วนขยายต่อไปนี้
// Html encode/decode
public static string HtmDecode(this string htmlEncodedString)
{
if(htmlEncodedString.Length > 0)
{
return System.Net.WebUtility.HtmlDecode(htmlEncodedString);
}
else
{
return htmlEncodedString;
}
}
public static string HtmEncode(this string htmlDecodedString)
{
if(htmlDecodedString.Length > 0)
{
return System.Net.WebUtility.HtmlEncode(htmlDecodedString);
}
else
{
return htmlDecodedString;
}
}
สำหรับสตริงที่มี & # x20; ฉันต้องถอดรหัสสตริงเป็นสองเท่า การถอดรหัสครั้งแรกจะทำให้มันกลายเป็นรหัสผ่านที่สองอย่างถูกต้องจะถอดรหัสมันเป็นตัวละครที่คาดหวัง