Java节点接收以UTF-8编码的Erlang字符串.它的类类型是OtpErlangString.如果我只是执行.toString()或.stringValue(),则生成的java.lang.String具有无效的代码点(基本上,Erlang字符串中的每个字节都被视为不同的字符).

现在,我想在创建Java String时使用新的String(字节,“UTF-8”),但是如何从OtpErlangString中获取字节?

解决方法:

当您使用UTF8字符时,在Java端获得OtpErlangString是很奇怪的.如果我只使用ASCII字符,我会得到这种类型的对象.如果我添加至少一个UTF8字符,结果类型是OtpErlangList(这是逻辑的,因为字符串只是Erlang中的int列表)然后我可以使用它的stringValue()方法.这样在发送字符串形式之后Erlang就像:

(waco@host)8> {proc, java1@host} ! "ąćśźżęółńa".

[261,263,347,378,380,281,243,322,324,97]

在Java节点上,我收到并打印它:

OtpErlangList l = (OtpErlangList) mbox.receive();

System.out.println(l.stringValue());

输出是正确的:

ąćśźżęółńa

但是,如果在您的情况下不是这种情况,您可以尝试通过例如强制OtpErlangList表示来解决它.添加一个空元组作为字符串列表的第一个元素:

(waco@wborowiec)11> {proc, java1@wborowiec} ! [{}] ++ "ąćśźżęółńa".

[{},261,263,347,378,380,281,243,322,324,97]

在Java方面,例如:

OtpErlangList l = (OtpErlangList) mbox.receive();

// get rid of an extra tuple

OtpErlangObject[] strArr = Arrays.copyOfRange(l.elements(), 1, l.elements().length);

OtpErlangList l2 = new OtpErlangList(strArr);

System.out.println(l2.stringValue());

标签:java,unicode,erlang,utf-8,jinterface

来源: https://codeday.me/bug/20190709/1416938.html

Erlang转JAVA,将Erlang UTF-8编码的字符串转换为java.lang.String相关推荐

  1. java bean jsonobject_利用JSONObject将json 字符串转换为java bean对象

    利用JSONObject将下面这个json字符串转换为javabean对象 { "assetInfoList":[{ "devsno":"xxx&qu ...

  2. json 解析 转java对象数组对象数组对象_json字符串转java对象数组

    需要引入json-lib-2.2-jdk15.jar和ezmorph-1.0.6.jar包 String itemStar = request.getParameter("itemStar& ...

  3. java xslt 数据转换_如何将xslt结果转换为Java对象?

    我有一个 XML文件: Empire Burlesque Bob Dylan USA Columbia 10.90 1985 而这个XSL文件: 现在我想将结果转换为Java类. Java的: @Xm ...

  4. java 字符串转日历_将字符串转换为Java中的日历对象

    现代方法使用java.time类. YearMonth.from( ZonedDateTime.parse( "Mon Mar 14 16:02:37 GMT 2011" , Da ...

  5. 将符合ISO 8601的字符串转换为java.util.Date

    我正在尝试将ISO 8601格式的String转换为java.util.Date . 如果与区域设置(比较示例)一起使用,我发现模式yyyy-MM-dd'T'HH:mm:ssZ符合ISO8601. 但 ...

  6. 按 字节截取分别以GBK 和 utf-8 编码的 字符串的java程序。

    package Other;import java.io.IOException;public class CutByteDemo {/*** @param args* @throws IOExcep ...

  7. java 俄语月份,适当的俄语月字符串翻译Java

    I want to convert a Date in to Russian and using the code below SimpleDateFormat.getDateInstance(Sim ...

  8. java 对象赋值给scala_将Scala变量转换为Java对象… varargs

    我有一个 Java类来记录这样一个方法的东西: void info(Object message,Object... params); 在Scala中,我创建了一个这样的一个包装器,看起来像这样: d ...

  9. java将json转为hashmap_将JSON字符串转换为HashMap

    largeQ 几天前我通过递归编写了这段代码.public static Map jsonToMap(JSONObject json) throws JSONException { Map retMa ...

最新文章

  1. javascript 关键字使用(break continue return) 数组 函数 数组中的冒泡排序(3分钟全部写完)...
  2. 电话无人应答转总机的配置方法
  3. ES6入门之对象扩展
  4. 【机器学习基础】从Few-shot Learning再次认识机器学习
  5. 关于C#中将数字转换为指定格式
  6. kafka集群 kubernetes_为什么 Kubernetes 如此受欢迎?
  7. IT软件项目管理视频教程—软件项目管理实战教程
  8. 163邮箱怎么注册,怎么给邮箱起一个好用的用户名?
  9. 计算机学报在线阅读,ei收录的计算机类核心源:计算机研究与发展计算机学报软件.doc...
  10. en45545防火标准_轨道交通防火标准:欧标EN45545-2详解
  11. MMORPG开发入门[转]
  12. 计算机组老师颁奖词,优秀教研团队颁奖词
  13. 报错GENERIC_INTERNAL_ERROR(65536)处理
  14. 如何通过Java导出带格式的 Excel 数据到 Word 表格
  15. 解压缩的mysql_Windows 上解压缩版 MySQL 配置
  16. matlab 椭圆方程拟合,matlab中如何插值拟合求椭圆方程
  17. 微信红包封面小程序源码-逢年过节非常火爆
  18. 我跟OpenStack 1-8年,从ABC到HI、到KO
  19. KeyDown、KeyUp、KeyPress区别
  20. 日期转换--接收日期与数据库存储不兼容问题时间段查询

热门文章

  1. [原创]Fluent NHibernate之旅
  2. 深入理解JS中this关键字
  3. 探索 Block 的本质
  4. 字符串中包含汉字和\u,显示出汉字来
  5. (转)js实现继承的5种方式
  6. pcm 转化为wav 文件
  7. 分享周鸿祎的《如何建立一个“铁打的营盘”》
  8. secureCRT的安装及破解
  9. Hark的数据结构与算法练习之图书馆排序
  10. Java编程中“为了性能”需做的26件事