我偶然发现这篇文章是关于ASP.NET 4.0中的一个新功能:这些新括号中的表达式<%: Content %>应该呈现为HTML编码.
我在FormView中的数据绑定标签中尝试过这样,如下所示:
<asp:Label ID="MyLabel" runat="server" Text='<%: Eval("MyTextProperty") %>' />
Run Code Online (Sandbox Code Playgroud)
但它不起作用:text属性包含脚本标记(用于测试),但输出为空.使用传统方式工作:
<asp:Label ID="MyLabel" runat="server"
Text='<%# HttpUtility.HtmlEncode(Eval("MyTextProperty")) %>' />
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
(旁注:我太愚蠢了,找不到任何信息:谷歌拒绝搜索那个东西.MSDN上的VS2010在线帮助提供了很多点击,但没有任何与我的搜索有关.Dackoverflow搜索也是.而且我没有知道这些"事物"(我的意思是括号)是如何被正式称为具有更好的搜索词.)
欢迎任何信息和其他链接和资源!
提前致谢!
我有以下脚本,它编码它收到的一些值,但它似乎不编码双引号.
在发布之前如何正确编码完整值?
function htmlEncode(value){
return $('<div/>').text(value).html();
}
Run Code Online (Sandbox Code Playgroud)
上面的脚本给了我这个:
<p>Test&nbsp; <span style="color: #ffffff"><strong><span style="background-color: #ff0000">1+1+1=3</span></strong></span></p>
Run Code Online (Sandbox Code Playgroud)
我需要它给我这个:
<p>Test&nbsp; <span style="color: #ffffff"><strong><span style="background-color: #ff0000">1+1+1=3</span></strong></span></p>
Run Code Online (Sandbox Code Playgroud)
编辑:后续问题: 数据库中的编码HTML返回页面
我正在寻找一种使用纯 JavaScript 或 jQuery 将 HTML 实体编号转换为字符的方法。
例如,我有一个看起来像这样的字符串(谢谢你,jQuery!朋克。)
Range1-of-5
Run Code Online (Sandbox Code Playgroud)
我需要的是:
Range1-of-5
Run Code Online (Sandbox Code Playgroud)
我找到了 String.fromCharCode() ,我可以在其中获取仅包含十进制值的字符,但我想在我重新发明轮子之前看看其他人是否有解决方案。:)
我们尝试在我们的ViewModel属性上使用[AllowHtml]修饰,以便我们可以避免使用YSOD:
从客户端检测到潜在危险的Request.Form值(RequestText =
"<br>").
当我们尝试提交html文本时,如:<br>.我们希望在控制器动作中使用Server.HtmlEncode来防止攻击,但是当我们用[AllowHtml]它来装饰属性没有任何影响时,如果我们尝试使用[ValidateInput(false)]控制器动作,它也没有任何效果.我们看到一个StackOverflow帖子说在MVC 3 RC2中你必须添加:
ModelMetadataProviders.Current = new DataAnnotationsModelMetadataProvider(); 到global.asax
我们也尝试过,即使我们使用的是MVC 3的发布版本,而不是RC2,但这也没有效果.有谁知道如何解决这一问题?
模型:
namespace UI.Models.ViewModel
{
public class CustomerRequestSupport
{
/// <summary>
/// Gets or Sets the textual description entered by the Customer for
/// the support requested.
/// </summary>
[AllowHtml]
public string RequestText { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
控制器:
[HttpPost]
[TabsActionFilter]
public ActionResult RequestSupport(CustomerRequestSupport collection)
{
if (ModelState.IsValid)
{
Ticket ticket = new Ticket();
ticket.Requestor = LoggedInCustomer; …Run Code Online (Sandbox Code Playgroud) 我一直致力于创建一个python markdown扩展,当使用自定义标记时,它将在我的django项目中插入一个图库.实际的扩展是有效的,但扩展返回的HTML都是编码的.这是我正在使用的扩展:
#!/usr/bin/env python
from django.template.loader import render_to_string
from main.models import *
import markdown
version = "0.1.0"
class GalleriaExtension(markdown.Extension):
def __init__(self, configs):
self.config = {
}
# Override defaults with user settings
for key, value in configs:
self.setConfig(key, value)
def add_inline(self, md, name, klass, re):
pattern = klass(re)
pattern.md = md
pattern.ext = self
md.inlinePatterns.add(name, pattern, "<reference")
def extendMarkdown(self, md, md_globals):
self.add_inline(md, 'galleria', Galleria,
r'\[\[(G|g)allery (?P<superpage_id>\w+)\]\]')
class Galleria(markdown.inlinepatterns.Pattern):
def handleMatch(self, m):
try:
images = SuperPage.objects.get(id=m.group('superpage_id')).superpageimage_set.all()
except:
images = None
if …Run Code Online (Sandbox Code Playgroud) 我正在使用tFPDF生成PDF.php文件是UTF-8编码的.©例如,我希望在pdf中输出作为版权符号.
我已经试过iconv,html_entity_decode,htmlspecialchars_decode.当我接受字符串我试图解码并硬编码到一个不同的文件并解码它,它按预期工作.因此,由于某些原因,它不会在PDF中输出.我试过输出缓冲.我正在使用DejaVuSansCondensed.ttf(真实字体).
链接到tFPDF:http://fpdf.org/en/script/script92.php
我没有想法.我试过双重解码,我到处检查,以确保它没有在其他地方编码.
救命!
CodeIgniters的安全类直接操纵您的Globals $_POST,它会发现file()并file ()成为威胁,因此HTML会对其进行编码.
// config.php from my apps folder is the culprit
$config['global_xss_filtering'] = TRUE;
Run Code Online (Sandbox Code Playgroud)
自己动手(少数人,勇敢者)
在CodeIgniter 2.1.4中,转到system/core/security.php#430-442行:
/*
* Sanitize naughty scripting elements
*
* Similar to above, only instead of looking for
* tags it looks for PHP and JavaScript commands
* that are disallowed. Rather than removing the
* code, it simply converts the parenthesis to entities
* rendering the code un-executable.
*
* For example: …Run Code Online (Sandbox Code Playgroud) 让我们看一个例子:有一个德语单词: Fußgängerübergänge
是)我有的:
web.config 文件:
...
<system.web>
<globalization
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
culture="auto"
uiCulture="auto"
/>
...
Run Code Online (Sandbox Code Playgroud)包含此单词的资源文件:
<?xml version="1.0" encoding="utf-8"?>
<root>
...
<data name="TestWord" xml:space="preserve">
<value>Fußgängerübergänge</value>
</data>
...
</root>
Run Code Online (Sandbox Code Playgroud)一个html页面硬编码相同的单词并使用此资源来引用该单词并从DB中检索此单词:
...
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
</head>
<body>
<div>Fußgängerübergänge</div>
<div>@Model.SameWordFromDbTable.TestWord</div>
<div>@Resources.MyResource.TestWord</div>
<div>@MvcHtmlString.Create(Resources.MyResource.TestWord)</div>
</body>
...
Run Code Online (Sandbox Code Playgroud)当我在网页的源代码中检查它们时,它们以两种不同的方式出现:
...
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
</head>
<body>
<div>Fußgängerübergänge</div>
<div>Fußgängerübergänge</div>
<div>Fußgängerübergänge</div>
<div>Fußgängerübergänge</div>
</body>
...
Run Code Online (Sandbox Code Playgroud)问题:我做错了什么,如何解决这个"编码"问题?如果希望源代码中的最后两个单词与前两个单词相同,我该怎么办?
我正在尝试生成一个URL:
GET-IT-一起-斯塔夫罗斯 - Zenonos放大器; -Katerina柯视图模式= 0
在哪里可以看到"amp;" 之后网址没有生成
如下所示:
GET-IT-一起-斯塔夫罗斯 - Zenonos放大器
请参阅下面的代码,该代码生成URL
<a class="fb-xfbml-parse-ignore" href="https://twitter.com/intent/tweet?url=<%=HTMLEncode(CMS.DocumentEngine.DocumentContext.CurrentDocument.AbsoluteURL)%>" onClick="return popup(this, 'notes')">
<img src="<%# Eval("twittericon") %>" alt="twitter icon" />
</a>
Run Code Online (Sandbox Code Playgroud)
你能帮助我生成完整的URL吗?
我需要在PHP 5.3网站上将字符串中的表情符号(例如)转换为它们各自的HTML代码实体(例如😀)。
我需要这样做,以便将用户输入正确存储在旧脚本MySQL数据库中,以便以后在显示给用户时正确显示。尝试直接从用户输入中保存表情符号时,它们被错误地保存为?数据库中的表情符号。该旧脚本utf8mb4在MySQL 中不支持(此解决方案失败),并且所有尝试转换其数据库,表和列的尝试utf8mb4都没有 解决了这个问题,所以我剩下唯一可以确认的解决方案是将用户输入的Emojis转换为字符串形式的HTML代码实体,以将这些实体按原样正确存储在数据库中,以便在检索时将它们正确显示为Emojis。因为现代浏览器会自动将这些表情符号实体转换为表情符号字符。
我也尝试过此解决方案,但仅在5.4及更高版本中,它不适用于PHP 5.3。(我无法在此特定站点上升级到5.4,因为它所依赖的旧脚本仅在5.3中可用,并且在任何情况下都不能更改或升级。)
我也尝试过此解决方案,该解决方案可在PHP 5.3中使用,但是您不能将其仅作为特定的Emoji字符串提供给它,因此即使在PHP 5.3中也无法解决我的问题。
我只需要将Emojis转换为字符串即可,别无其他。(但是,如果不可能,那么我想我可以将其他HTML实体与之一起使用,例如&to &,但是我不希望这样)。
那么,如何在PHP 5.3中将字符串中的表情符号转换为它们各自的HTML代码实体,从而将类似的字符串this & that 转换为this & that 😎?