ฉันมีที่อยู่อีเมลที่เข้ารหัสด้วยเอนทิตีอักขระ 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()
เหมือนผมคุณควรใช้ มันต้องใช้เวลาและผลตอบแทนstring
string
เขียนวิธีการแบบสแตติกลงในคลาสยูทิลิตี้บางอย่างซึ่งยอมรับสตริงเป็นพารามิเตอร์และส่งคืนสตริง 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; ฉันต้องถอดรหัสสตริงเป็นสองเท่า การถอดรหัสครั้งแรกจะทำให้มันกลายเป็นรหัสผ่านที่สองอย่างถูกต้องจะถอดรหัสมันเป็นตัวละครที่คาดหวัง