我们有一个页面将数据发布到ISO-8859-1中的ASP.NET应用程序
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<title>`Sample Search Invoker`</title>
</head>
<body>
<form name="advancedform" method="post" action="SearchResults.aspx">
<input class="field" name="SearchTextBox" type="text" />
<input class="button" name="search" type="submit" value="Search >" />
</form>
Run Code Online (Sandbox Code Playgroud)
并在后面的代码(SearchResults.aspx.cs)
System.Collections.Specialized.NameValueCollection postedValues = Request.Form;
String nextKey;
for (int i = 0; i < postedValues.AllKeys.Length; i++)
{
nextKey = postedValues.AllKeys[i];
if (nextKey.Substring(0, 2) != "__")
{
// Get basic search text
if (nextKey.EndsWith(XAEConstants.CONTROL_SearchTextBox))
{
// Get search text value
String sSentSearchText = postedValues[i];
System.Text.Encoding iso88591 = System.Text.Encoding.GetEncoding("iso-8859-1");
System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
byte[] …Run Code Online (Sandbox Code Playgroud) 我需要使用VB.NET将UTF8字符串转换为ISO-8859-1字符串.
任何例子?
强调文本我尝试过拉丁语功能而不是运行.我收到错误的字符串.
我的情况是我需要使用API发送短信.
现在我有这个代码:
baseurl = "http://www.myweb.com/api/sendsms.php"
client = New WebClient
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
client.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1")
client.QueryString.Add("user", user)
client.QueryString.Add("password", pass)
client.QueryString.Add("alias", myAlias)
client.QueryString.Add("dest", mobile)
textoSms = Me.mmTexto.Text
textoSms = System.Web.HttpUtility.UrlEncode(textoSms)
client.QueryString.Add("message", textoSms)
data = client.OpenRead(baseurl)
reader = New StreamReader(data)
s = reader.ReadToEnd()
data.Close()
reader.Close()
Run Code Online (Sandbox Code Playgroud)
但不是运行...我收到不正确的消息.例如
如果我写:mañana返回maa ana
如果我写aigüa返回aiga
我正在实施名为Suomen Verkkomaksut的数字支付服务界面.有关付款的信息将通过HTML表单发送给他们.为了确保在传输过程中没有人混淆信息,MD5哈希在两端都会计算出一个没有发送给他们的特殊密钥.
我的问题是,由于某种原因,他们似乎决定传入的数据是用ISO-8859-1而不是UTF-8编码的.我发送给它们的哈希是用UTF-8字符串计算的,因此它与它们计算的哈希值不同.
我尝试使用以下代码:
String prehash = "6pKF4jkv97zmqBJ3ZL8gUw5DfT2NMQ|13466|123456||Testitilaus|EUR|http://www.esimerkki.fi/success|http://www.esimerkki.fi/cancel|http://www.esimerkki.fi/notify|5.1|fi_FI|0412345678|0412345678|esimerkki@esimerkki.fi|Matti|Meikäläinen||Testikatu 1|40500|Jyväskylä|FI|1|2|Tuote #101|101|1|10.00|22.00|0|1|Tuote #202|202|2|8.50|22.00|0|1";
String prehashIso = new String(prehash.getBytes("ISO-8859-1"), "ISO-8859-1");
String hash = Crypt.md5sum(prehash).toUpperCase();
String hashIso = Crypt.md5sum(prehashIso).toUpperCase();
Run Code Online (Sandbox Code Playgroud)
不幸的是,两个散列都与值C83CF67455AF10913D54252737F30E21相同.根据Suomen Verkkomaksut的文档,此示例案例的正确值为975816A41B9EB79B18B3B4526569640E.
有没有办法用ISO-8859-1字符串计算Java中的MD5哈希?
更新:在等待Suomen Verkkomaksut的回答时,我发现了另一种制作哈希的方法.Michael Borgwardt纠正了我对字符串和编码的理解,并且我找到了一种从byte []创建哈希的方法.
Apache Commons是一个很好的库源,我发现它们的DigestUtils类有一个md5hex函数,它接受byte []输入并返回一个32字符的十六进制字符串.
由于某种原因,这仍然无效.这两个都返回相同的值:
DigestUtils.md5Hex(prehash.getBytes());
DigestUtils.md5Hex(prehash.getBytes("ISO-8859-1"));
Run Code Online (Sandbox Code Playgroud) 我想使用PHP 将包含拉丁字符(如à)的URL编码为ISO-8859-1 .
编码的字符串将用于执行对Web服务的请求.因此,如果请求是:
http://www.mywebservice.com?param =à
编码的字符串应该是:
http://www.mywebservice.com?param=%E0
我尝试过使用PHP的函数urlencode(),但它返回以UTF-8编码的输入:
我想将字符串从GBK字符集转换为ISO-8859-1。
我尝试使用iconv库,但iconv()始终返回-1,并errno解码为“无效或不完整的多字节或宽字符”。
我该如何实现?
我一直在尝试这项工作但到目前为止还没有运气.我不清楚最新情况,但我会尽力解释.我的服务器端jsp页面都使用ISO-8859-1编码,我不想改变.所有请求/响应都是xml格式.POST请求当前正在使用javascript escapeURIComponent函数,一切都运行良好,直到有一个特殊字符,例如字符串:hello°world©®™test.当这个字符串escapeURIComponent从IE中被POST(与数据部分一起),并且当重新加载页面时应该获得相同的字符串,该字符串将呈现为:hello°world©’¢test
我假设发生这种情况是因为encodeURIComponent函数将字符串编码为UTF-8,而不是ISO-8859-1,并且当页面呈现时,UTF-8被解释为ISO-8859-1字符,因此显示字符串乱码.
有没有办法解决这个问题,而无需将网页转换为UTF-8字符集?
POST请求的Content-Type设置为"application/x-www-form-urlencoded"
提前致谢.
我想确定是否使用
PrintWriter pw = new PrintWriter(outputFilename, "ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)
要么
PrintWriter pw = new PrintWriter(outputFilename, "US-ASCII");
Run Code Online (Sandbox Code Playgroud)
我正在阅读所有有关字符集的内容,以确定我必须通过java代码以相同编码创建的示例文件的字符集.
当我的示例文件包含"欧洲"字母(挪威语:åøæ)时,以下命令告诉我文件编码为"iso-8859-1"
file -bi example.txt
Run Code Online (Sandbox Code Playgroud)
但是,当我获取同一个示例文件的副本并修改它以包含不同的数据时,没有任何挪威文本(假设我将"Bjørn"替换为"Bjorn"),那么相同的命令告诉我文件编码是" US-ASCII".
file -bi example-no-european-letters.txt
Run Code Online (Sandbox Code Playgroud)
这是什么意思?如果没有"欧洲"字符,ISO-8859-1在实践中是否与US-ASCII相同?
我应该只使用charset"ISO-8559-1",一切都会好吗?
我有以下代码:
const notifications = await axios.get(url)
const ctype = notifications.headers["content-type"];
Run Code Online (Sandbox Code Playgroud)
ctype 接收“text/json; charset=iso-8859-1”
我的字符串是这样的:“'Ol?Matheus,est?pendente。',”
如何从 iso-8859-1 解码到 utf-8 而不会出现这些错误?
谢谢
以下如何在 Python 中没有任何错误地工作?
>>> '??'.encode('UTF-8').decode('ISO8859-1')
'ä½\xa0好'
>>> _.encode('ISO8859-1').decode('UTF-8')
'??'
Run Code Online (Sandbox Code Playgroud)
我原以为它会因 UnicodeEncodeError 或 UnicodeDecodeError 而失败
是否有 ISO8859-1 和 UTF-8 的某些属性,以便我可以采用任何 UTF-8 编码字符串并将其解码为 ISO8859-1 字符串,稍后可以将其反转以获得原始 UTF-8 字符串?
我正在使用仅支持 ISO8859-1 字符集的旧数据库。通过将 UTF-8 编码的字符串解码为 ISO8859-1,并将生成的垃圾字符串存储在数据库中,开发人员似乎能够在该数据库中存储中文和其他语言。查询该数据库的下游系统必须在 ISO8859-1 中对垃圾字符串进行编码,然后使用 UTF-8 对结果进行解码以获得正确的字符串。
我会假设这样的过程根本行不通。
我错过了什么?