当前位置: 首页 > 面试题库 >

将字符串从EBCDIC转换为Unicode / UTF8

阎修杰
2023-03-14
问题内容

我能够从发送消息JavaWebsphere MQAS400。如果我从发送消息WinXP,则使用任何可访问性Locale(包括完整的语言本地化)都没有区别;英语也没有问题Locale。正确的编码很重要,只有以下代码行:

msgId.characterSet = 1208;

不幸的是,这是无效的。我要从中获取消息的情况有所不同MQ Queue

  • 在我得到消息的情况下MQ Queue,从Windows操作系统(英语,没有任何语言包),我能够把消息来自MQ QueueString形式。

  • 如果Windows操作系统使用某些语言包进行了完全本地化,则我将收到一个例外

    消息缓冲区发生异常:
    java.io.UnsupportedEncodingException:Cp870

从代码中删除(从尝试中删除balast-catch-finally块)

try {
    Class.forName("com.ibm.mq.MQEnvironment");
    MQEnvironment.hostname = hostname;
    MQEnvironment.port = port1;
    MQEnvironment.channel = channel;
    MQEnvironment.userID = userID;
    MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);
    try {
        qmgr1 = new MQQueueManager(qmanager);
        MQGetMessageOptions gmo = new MQGetMessageOptions();
        int openOptions2 = MQC.MQOO_INPUT_SHARED;
        gmo.options = MQC.MQGMO_NO_SYNCPOINT; //Set no sync point
        gmo.options = MQC.MQGMO_CONVERT; //Handles ASCII/EBCDIC
        gmo.options = MQC.MQGMO_WAIT; //Wait until message arrives
        gmo.waitInterval = 3000;
        getq = qmgr1.accessQueue(responseQueue, openOptions2);
        while (true) {
            try {
                responseFromQUEUE = "";
                MQMessage msgId = new MQMessage();
                //putmsg.characterSet = 437;// Set code page to ASCII
                //putmsg.characterSet = 1200;// Set code page to UNICODE
                msgId.characterSet = 1208;
                getq.get(msgId, gmo);
                String str = msgId.readLine();
                //responseFromQUEUE = CpConv.tf870to1250(msgId.readLine());
                //own EncodePage doesn't works too
                if (responseFromQUEUE.length() == 0) {
                    break;
                }
            } catch (MQException mqx) {
                if (mqx.reasonCode == EMPTY_QUEUE) {
                } else {
                }
            }
        }
    } catch (MQException mqx) {
    } finally {
    }
} catch (IOException ex) {
} catch (ClassNotFoundException e) {
}

  • 是否有一些参数,我想String从那里拿走一些MQMessage#readLine()

  • 我的问题只是关于String转化,

  • 我没有任何问题与EncodeMQMessage#getBytes


问题答案:

CP870是EBCDIC主机代码页。发生异常时,您要将Windows更改到什么语言环境?msgId.characterSet = 1208;更改本地后您还使用吗?看来Java库无法将CP870中的传入消息转换为当前语言环境。

更改语言环境时,请检查Windows代码页是什么,并查看msgId.characterSet
1208是否正确。



 类似资料:
  • 问题内容: 我需要编写一个“简单”实用程序以将ASCII转换为EBCDIC吗? Ascii来自Java,Web和AS400。我周围有一个google,似乎找不到一个简单的解决方案(也许因为没有一个:()。我希望使用开源util或为已经编写的util付费。 这样吧? 谢谢, 史考特 问题答案: JTOpen是IBM Java工具箱的开源版本,它具有访问AS / 400对象的类的集合,包括用于访问本机

  • 问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str

  • 我需要读入带有unicode转义的标准ascii样式字符串,并将其转换为包含utf8编码等价物的std::字符串。因此,例如“\u03a0”(包含6个字符的std::字符串)应转换为包含两个字符的std::字符串,分别为0xCE和0xA0,以原始二进制格式。 如果有一个简单的答案使用icu或boost我会很高兴,但我还没有找到一个。 (这类似于将Unicode字符串转换为转义ASCII字符串,但注

  • 问题内容: 我有一个包含unicode字符等的字符串,以某种方式不被我接收,但被作为接收。如何将其转换回unicode? 显然不是答案。那是什么 问题答案: Unicode转义仅适用于unicode字符串,因此 实际上是由6个字符组成的字符串:“ \”,“ u”,“ 2”,“ 0”,“ 2”,“ 6”。 要从中制作出unicode,请使用:

  • 问题内容: 我从HTML页面中将一个字符串输入到Java HTTPServlet中。根据我的要求,我得到了显示汉字的ASCII码: “可以告诉我” (无空格) 如何将该字符串转换为Unicode? HTML代码: Java代码: 如果我打印问题[0],则会得到以下值:“可以告&#3578

  • 问题内容: 当我尝试使用“ unicode(head.contents [3])”获取标签的内容时,我得到类似于以下的输出:“ Christensen Sk \ xf6ld”。我希望转义序列作为字符串返回。如何在python中做? 问题答案: 假设Python将名称视为普通字符串,则首先必须将其解码为unicode: 实现此目的的另一种方法: 注意字符串前面的“ u”,表示它是未编码的。如果进行打