Tag: 编码

PHP中的decodeURIcomponent相当于什么?

我有一个string与我通过HTTP传输的Unicode字符。 这个string是用Javascript的encodeURIcomponent()编码的。 有没有在Javascript的decodeURIComponent() PHP等效函数?

如何在Ruby中指定输出文件的编码?

如何在使用File#open时设置文件的编码?

ASP.NET Excel导出编码问题

我在ASP.NET网站上做了一些Excel导出。 除了编码之外,一切都可以使用。 当我在Excel中打开它时,它看起来像这样: Eingabe Kosten jeGerätGerät:Gerätebezeichnung:BetriebsmittelHeizöl在“4 Dieselverbrauch in:4 这是我的代码: Response.Clear(); Response.ContentType = "application/ms-excel"; Response.AddHeader("Content-Disposition", "inline;filename=NachkalkGeraete.xls;"); var writer = new HtmlTextWriter(Response.Output); SomeControl.RenderControl(writer); /* FormView, Table, DataGrid… */ Response.End(); 我已经尝试明确设置编码..但没有发生变化: Response.Clear(); Response.ContentType = "application/vnd.ms-excel"; Response.AddHeader("Content-Disposition", "attachment; filename=NachkalkGeraete.xls"); Response.BufferOutput = true; Response.ContentEncoding = System.Text.Encoding.UTF8; Response.Charset = "UTF-8"; EnableViewState = false; System.IO.StringWriter tw = new System.IO.StringWriter(); HtmlTextWriter hw = […]

Mysql2 ::错误:不正确的string值

我有一个在生产模式下运行的Rails应用程序,但是当用户试图保存logging时,突然间出现了这个错误。 Mysql2::Error: Incorrect string value 更多细节(从生产日志): Parameters: {"utf8"=>"â<9c><93>" … Mysql2::Error: Incorrect string value: '\xC5\x99\xC3\xA1k Mysql2::Error: Incorrect string value: '\xC5\x99\xC3\xA1k 现在我看到了一些需要删除数据库并重新创build的解决scheme,但是我不能这么做。 现在mysql显示这个: mysql> show variables like 'char%'; +————————–+—————————-+ | Variable_name | Value | +————————–+—————————-+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results […]

如何使用Shift-JIS和CP932创buildSQL注入攻击?

我正在写一些unit testing,以确保我的代码不容易在各种字符集下的SQL注入。 根据这个答案 ,您可以通过使用以下字符集之一注入\xbf\x27来创build漏洞: big5 , cp932 , gb2312 , gbk和sjis 这是因为如果您的助手configuration不正确,它会看到0x27并尝试转义它,使其成为\xbf\x5c\x27 。 但是, \xbf\x5c实际上是这些字符\xbf\x5c的一个字符,因此引号( 0x27 ) \xbf\x5c转义。 但是,正如我通过testing发现的,这不完全正确。 它适用于big5 , gb2312和gbk但在sjis和cp932都不是0xbf27或cp932 。 都 mb_strpos("abc\xbf\x27def","'",0,'sjis') 和 mb_strpos("abc\xbf\x27def","'",0,'cp932') 返回4 。 即PHP不会将\xbf\x27看作单个字符。 这将返回false为big5 , gb2312和gbk 。 另外,这个: mb_strlen("\xbf\x5c",'sjis') 返回2 (它为gbk返回1 )。 所以,问题是:是否有另一个字符序列,使sjis和cp932容易受到SQL注入,或者他们实际上不是脆弱的? 或者说是PHP说谎,我完全错了,MySQL会完全不同的解释?

PowerShell的UTF-8输出

我正在尝试使用带有redirectI / O的Process.Start来使用string调用PowerShell.exe ,并使用UTF-8获取输出。 但我似乎无法做到这一点。 我试过了: 传递命令通过-Command参数运行 使用UTF-8编码将PowerShell脚本作为文件写入磁盘 使用带有BOM编码的UTF-8将PowerShell脚本作为文件写入磁盘 使用UTF-16将PowerShell脚本作为文件写入磁盘 在我的控制台应用程序和PowerShell脚本中设置Console.OutputEncoding 在PowerShell中设置$OutputEncoding 设置Process.StartInfo.StandardOutputEncoding 使用Encoding.Unicode而不是Encoding.UTF8 在任何情况下,当我检查给出的字节时,我得到不同的值到我原来的string。 我真的很喜欢解释为什么这不起作用。 这是我的代码: static void Main(string[] args) { DumpBytes("Héllo"); ExecuteCommand("PowerShell.exe", "-Command \"$OutputEncoding = [System.Text.Encoding]::UTF8 ; Write-Output 'Héllo';\"", Environment.CurrentDirectory, DumpBytes, DumpBytes); Console.ReadLine(); } static void DumpBytes(string text) { Console.Write(text + " " + string.Join(",", Encoding.UTF8.GetBytes(text).Select(b => b.ToString("X")))); Console.WriteLine(); } static int ExecuteCommand(string […]

编码window.location.hash

window.location.hash是否包含url部分的编码或解码表示? 当我在Firefox 3.5和Internet Explorer 8中打开相同的URL( http://localhost/something/#%C3%BC ,其中%C3%BC转换为ü )时, document.location.hash会得到不同的值: IE8: #%C3%BC FF3.5: #ü 有没有办法在两个浏览器中获得一个变体?

如何在C#中用UTF-8以外的代码页写出文本文件?

我想写出一个文本文件。 而不是默认的UTF-8,我想写它编码为ISO-8859-1,这是代码页28591.我不知道如何做到这一点… 我用以下非常简单的代码写出我的文件: using (StreamWriter sw = File.CreateText(myfilename)) { sw.WriteLine("my text…"); sw.Close(); }

在HTTP URL的path部分中,斜杠(“/”)等同于编码的斜杠(“%2F”)

我有一个网站,不同的URL的path部分(而不是查询string)中的“/”和“%2F”。 根据RFC或现实世界,这是一件坏事吗? 我问,因为我一直使用我正在使用的Web框架(Ruby on Rails)以及下面的层(Passenger,Apache,例如,我必须为Apache启用“ALLOW_ENCODED_SLASHES”)时遇到一些小惊喜。 我现在倾向于彻底摆脱编码的斜杠,但是我不知道是否应该提交错误报告,在那里我看到涉及编码斜杠的奇怪行为。 至于为什么我首先有编码的斜线,基本上我有这样的路线: :controller/:foo/:bar 其中:foo类似于可以包含斜杠的path。 我认为最简单的事情就是只要URL转义foo所以斜杠被路由机制忽略。 现在我有疑问了,很明显,这个框架并不是真的支持这个,但根据RFC,这样做是错误的吗? 以下是我收集的一些信息: RFC 1738(URL): 当一个八位字节由一个字符表示并且被编码时,通常一个URL具有相同的解释。 但是,对于保留字符而言,这不是真的:对为特定scheme保留的字符进行编码可能会改变URL的语义。 RFC 2396(URI): 这些字符被称为“保留”,因为它们在URI组件中的使用仅限于其保留的用途。 如果URI组件的数据与保留目的冲突,那么冲突的数据必须在形成URI之前转义。 (在这里转义意味着除了编码保留字符之外的东西吗?) RFC 2616(HTTP / 1.1): 除“保留”和“不安全”集以外的字符(见RFC 2396 [42])等同于其“”HEX HEX“%”编码。 还有Rails的这个错误报告 ,他们似乎期望编码的斜线行为不同: 对,我期望不同的结果,因为他们指着不同的资源。 它正在寻找根目录中的文字文件“foo / bar”。 非转义版本正在寻找目录foo中的文件栏。 从RFC中可以清楚的看到,原始编码和未编码的字符是相同的,但是保留字符的故事是什么?

为什么MySQL使用latin1_swedish_ci作为默认值?

有谁知道为什么latin1_swedish是MySQL的默认值。 在我看来,UTF-8会更加兼容吗? 默认select通常是因为它们是最好的普遍select,但在这种情况下,似乎并不是他们所做的。