Tag: 字符编码

Intellij Idea控制台输出中的编码错误

它似乎真的很疯狂,但我无法在我的intellij想法的控制台中使用破碎的编码做任何事情。 我为克服这个问题做了些什么: 在idea.exe.vmoptions和idea64.exe.vmoptions中设置-Dfile.encoding = UTF-8和-Dfile.encoding = UTF-8(虽然我使用64位版本)。 添加了-Dfile.encoding = UTF-8和-Dfile.encoding = UTF-8来运行/调试我的应用程序的配置。 更改设置>编辑器>文件编码IDE编码/项目编码/属性文件的默认编码为UTF-8。 完成所有这些操作仍然没有运气,并且控制台中没有正确显示符号。 我试图调试java.io.PrintStream #println(java.lang.String)方法,发现System.out.textOut.out.se.cs等于windows-1251。 不知道这个价值来自哪里。 这个问题困扰了我很长一段时间,我无法在网上找到任何可以帮助我的东西。 在此先感谢您的帮助。

System.out字符编码

我正在从命令行运行我的Java程序(Windows 7)。 为简化问题,我仅描述相关部分。 public static void main(String[] args) { System.out.println(“Árpád”); } 我的输出是垃圾。 这显然是一个字符编码问题,Á和á的匈牙利字符没有正确显示。 我尝试过以下方法: public static void main(String[] args) { PrintStream ps = new PrintStream(System.out, true, “UTF-8”); ps.println(“Árpád”); } 但我的输出仍然是垃圾。 如何使用Windows 7命令行解决此字符编码问题? 谢谢

PHP和Java hmac哈希输出匹配hex,在原始二进制文件中不匹配。 发生了什么?

我正在开发一个Java游戏,它将打包为applet,我正在研究网络方面。 我设计了一个会话流程,可以满足请求频率和安全需求,而无需使用SSL。 数据传输过程基于facebook在其OAuth流程中使用signed_token的方式。 这是简化的上下文: 我的php / java实现使用hash_hmac / javax.crypto.Mac生成一个用于签署有效负载的模糊签名,基于共享,秘密,唯一令牌和各种JSON有效负载 两个输出必须完全匹配,因为它们是更大的编码/解码压缩方案的一部分 此签名将通过带有效负载的URL传递,并用于validation有效负载的有效性和完整性 正如您可以推断的那样,如果它们不匹配,那么由于发送的数据无效,我丢弃了数据包和错误。 我的问题是, 虽然结果的hex编码完全匹配,但原始二进制文件似乎永远不匹配 。 下面是我设置的提取的php和Java测试用例: 注意:由于php和java如何为php关联数组/ java哈希映射生成JSON结构的差异,我使用秘密的值代替字符串有效负载,以便两个字段在平台之间保持一致。 PHP的: $secret = “922ec205d8e4d0ea06079d60a5336fffd9cf0aea”; $json = $secret; //json_encode($test_array); $hmac_a = hash_hmac(‘sha256’,$json,$secret); $hmac_b = hash_hmac(‘sha256’,$json,$secret,$raw=true); echo(htmlentities($hmac_a).”\n”); echo(htmlentities($hmac_b).”\n”); 浏览器内输出: ff21a9e468ac49863e5e992324ac8bc92f239a08100b0f329b087be16f5ad382 Y!©äh¬I†> ^™#$¬ {áoZÓ, Java的: Mac hmac = Mac.getInstance(“HmacSHA256”); SecretKeySpec secret_key = new SecretKeySpec(Charset.forName(“UTF-8”).encode(this.secret).array(), “HmacSHA256”); hmac.init(secret_key); byte[] digest = hmac.doFinal(this.secret.getBytes(“UTF-8”)); […]

java的UTF-16字符编码

我试图理解Java中的字符编码。 Java中的字符使用UTF-16编码以16位存储。 因此,当我将包含6个字符的字符串转换为字节时,我得到6个字节,如下所示,我希望它是12.我有什么概念缺少吗? package learn.java; public class CharacterTest { public static void main(String[] args) { String str = “Hadoop”; byte bt[] = str.getBytes(); System.out.println(“the length of character array is ” + bt.length); } } O / p:字符数组的长度为6 根据@Darshan当尝试使用UTF-16编码来获取字节时,结果也没有预料到。 package learn.java; public class CharacterTest { public static void main(String[] args) { String str = “Hadoop”; try{ […]

Java Spring resttemplate字符编码

我正在使用Java Spring Resttemplate通过get请求获取json。 我得到的JSON不是特殊字符,而是someö或ß一些奇怪的东西。 所以我猜这个字符编码有些不对劲。 我在互联网上找不到任何帮助。 我现在使用的代码是: String json = restTemplate.getForObject( overPassStatementPostCode, String.class, params);

javax.crypto.IllegalBlockSizeException:解密时最后一个块不完整 – 解密加密的AES字符串

我试图解密我从后端服务器收到的字符串”~9?8?m???=?T?G” ,后端服务器使用OpenSSL使用AES-256-CBC加密字符串。 有代码块: public static String decryptText(String textToDecrypt) { try { byte[] base64TextToDecrypt = Base64.encodeBase64(textToDecrypt.getBytes(“UTF-8”)); byte[] guid = “fjakdsjkld;asfj”.getBytes(“UTF-8”); byte[] iv = new byte[16]; System.arraycopy(guid, 0, iv, 0, guid.length); IvParameterSpec ips = new IvParameterSpec(iv); byte[] secret = DECRYPTION_SECRET_HASH.getBytes(“UTF-8”); SecretKeySpec secretKey = new SecretKeySpec(secret, “AES”); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); // decryption pass cipher.init(Cipher.DECRYPT_MODE, secretKey, ips); byte[] […]

在Java中确定平台的默认字符集

我用Java编程 我有以下代码: byte[] b = test.getBytes(); 在api中指定如果我们不指定字符编码,则采用默认的平台字符编码。 “默认平台字符编码”是什么意思? 这是指Java编码还是操作系统编码? 如果它意味着OS编码,我该如何检查Windows和Linux的默认字符编码? 无论如何我们可以使用命令行获取默认字符编码?

有没有办法在不使用外部JAVA_TOOL_OPTIONS的情况下使用UTF-8构建maven构建类文件?

我不想依赖外部环境变量来强制maven用UTF-8构建我的类。 在Mac上,我在使用maven构建时遇到了各种各样的问题。 只有下面的选项才能解决问题: export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 mvn clean install 但是我正在分发我的项目,依靠用户设置此环境变量来正确构建项目是没有意义的。 尝试了这里描述的所有内容: 为clojure源文件启用UTF-8编码 任何人都对这个令人敬畏的Maven问题有所了解?

从编译到运行时,Java String编码如何真正起作用

我最近意识到我并不完全理解Java的字符串编码过程。 请考虑以下代码: public class Main { public static void main(String[] args) { System.out.println(java.nio.charset.Charset.defaultCharset().name()); System.out.println(“ack char: ^”); /* where ^ = 0x06, the ack char */ } } 由于控制字符在windows-1252和ISO-8859-1之间有不同的解释 ,因此我选择了ack char进行测试。 我现在用不同的文件编码,UTF-8, windows-1252和ISO-8859-1编译它。 两者都编译为完全相同的东西,每个字节的字节由md5sumvalidation。 然后我运行程序: $ java Main | hexdump -C 00000000 55 54 46 2d 38 0a 61 63 6b 20 63 68 61 72 […]

Java – 什么是字符,代码点和代理? 它们之间有什么区别?

我试图找到术语“字符”,“代码点”和“代理”的解释,虽然这些术语不仅限于Java,但如果存在任何特定于语言的差异,我希望解释为它与Java有关。 我发现了一些关于字符和代码点之间差异的信息,字符是为人类用户显示的内容,代码点是编码该特定字符的值,但我对代理不了解。 什么是代理人,他们与角色和代码点有何不同? 我对字符和代码点有正确的定义吗? 在另一个关于将字符串作为字符数组逐步执行的线程中 ,提示此问题的具体注释是“请注意,此技术为您提供字符,而不是代码点,这意味着您可能会获得代理。” 我真的不明白,而不是就一个5年前的问题创建一系列评论,我认为最好在新问题中要求澄清。