我想知道是否有人能帮忙,我很难将UTF-8字符发布到SagePay。数据库是MySQL,带有数据库字符集utf8和数据库排序规则utf8_general_ci。数据库连接字符串使用useUnicode=true
所有发布到数据库的数据都存储为UTF-8,所有查询的数据都显示为UTF-8,但当字符串编码如下时:
crypt = Base64Coder.encodeString(encXor(strPost));
然后发到SagePay,他们会收到一个来自国际字符所在位置的乱码字符串。如果字符串中不包含国际字符,则向SapePay发送成功。
我的问题是,如果查询的数据是UTF-8,为什么发布前的加密或编码不是UTF-8,以及我如何强制UTF-8编码或可能强制ISO-8859-1发布到SagePay,尽管我更愿意保留UTF-8,但仍在努力寻找解决方案。
Xor函数如下:
public static String encXor(String s)
{
String s1 = "password";
String s2 = null;
byte abyte0[] = s.getBytes();
byte abyte1[] = s1.getBytes();
int i = 0;
int j = abyte1.length;
ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(abyte0.length);
for(int k = 0; k < abyte0.length; k++)
{
byte byte0 = abyte0[k];
byte byte1 = abyte1[i];
byte byte2 = (byte)(byte0 ^ byte1);
if(i < j - 1)
i++;
else
i = 0;
bytearrayoutputstream.write(byte2);
}
try
{
bytearrayoutputstream.flush();
s2 = bytearrayoutputstream.toString();
bytearrayoutputstream.close();
bytearrayoutputstream = null;
}
catch(IOException ioexception) { }
return s2;
}
任何帮助都将不胜感激:-)
我发现了这个问题,它与代码无关,但实际上与一些启动参数有关。使用Tomcat7w。我注意到Java选项卡中有以下几行:
-Dfile.encoding=UTF-8
-Dsun.jnu.encoding=UTF-8
我删除了这些行,重新启动了Tomcat服务,一切正常,因此不需要修改代码。
感谢所有回应:-)
当你这么做的时候
byte abyte0[] = s.getBytes();
byte abyte1[] = s1.getBytes();
您使用的是Java平台编码,它可能不是UTF-8。更糟糕的是,客户机和服务器之间可能会有所不同。
尝试显式指定编码:
byte abyte0[] = s.getBytes(StandardCharsets.UTF_8);
byte abyte1[] = s1.getBytes(StandardCharsets.UTF_8);
当从字节转换回字符串时,同样适用。
我在将文本从UTF-8编码转换为UTF-8编码时遇到问题。这里有字节数组, 我正在将其转换为UTF-8字符串并返回字节数组, 据我所知,这是一个3字节的数组。正当但这是我得到的。 这是什么原因?据我所知,在UTF-8 Specials中,2391189组合被称为替换字符。 这也是一个更大问题的一部分。
问题内容: 使用UTF-8编码创建字符串时存在不一致的地方。 运行此代码: 在Java 1.8.0_20(及更早版本)上,我们得到结果 在Java 1.7和1.6上,我们得到正确的结果: 您遇到此错误了吗?有没有解决方法? 对于Shift_JIS,JIS_X0212-1990,x-IBM300,x-IBM834,x-IBM942,x-IBM942C,x-JIS0208来说,这种不一致也很明显,但显
我需要导出javascript数组到CSV文件和下载。我这么做了,但是'ó,ü,ö,ó,ş'这些字符在CSV文件中看起来像'\\\\\\\\\\\'。我已经尝试了这个网站上推荐的许多解决方案,但对我不起作用。 我添加了我的代码片段,有人能解决这个问题吗?
我的内页有问题。它只是将页面识别为iso,但我想要utf-8,我将其声明为默认字符集。我尝试对freemarker配置进行一些修改,但没有效果。 springservlet。xml template.html login.html 输出
我使用的是Jaspersoft Studio最终版本(v6.1.1)。我设计了我的报告,其中包含土耳其文字。从Studio导出报告为PDF时,虽然我已将Studio工作区编码设置为UTF-8,但不会显示土耳其语字符。此外,我已在JSF应用程序中嵌入jrxml报告文件并导出报告,结果是相同的。 我需要配置更多吗?
我使用Java/Jsp开发了一个web应用程序,该应用程序运行在带有Tomcat 8的Ubuntu14.04 LTS服务器上,下面的UTF-8编码问题与部分符号§apperas有关。 在服务器端输入的任何章节符号§都将转换为§,我不知道为什么。 简单系统输出: