佩剑特殊人物

时间:2015-08-02 20:52:26

标签: c# sabre

我正在使用Sabre网络服务(SabreCommandLLSRQ)为低票价重新预订构建c#概念证明。

我现在正在打一些特殊的军刀角色,我不知道它们在c#中是什么。我有一些正在工作,但我肯定会遇到更多 - 有没有人有c#的军刀角色映射?

private string BuildPriceLine()
{
    const char CHLOR = (char)0xE7;   // Cross-of-Lorraine
    const char ENDITEM = (char)0xA7; // End Item key
    const char CHGKEY = (char)0xA5;  // Change Key

    var sabreCommand = new StringBuilder();

    // WPRQ‡AAA‡UN*C123456‡KP0‡XP«
    sabreCommand.Append("WPRQ");
    sabreCommand.Append(CHLOR);
    sabreCommand.Append("AAA");
    sabreCommand.Append(CHLOR);
    sabreCommand.Append("UN*C123456");
    sabreCommand.Append(CHLOR);
    sabreCommand.Append("KP0");
    sabreCommand.Append(CHLOR);
    sabreCommand.Append("XP");
    sabreCommand.Append(WhatSabreCharIsThis); // "«" ?

    return sabreCommand.ToString();
}

3 个答案:

答案 0 :(得分:3)

Pj是对的。当你点击“输入”时在终端窗口中发送该命令作为代理将出现该字符。请不要将其包含在您的请求中。

答案 1 :(得分:2)

当您想在XML中插入特殊的Sabre字符时,这就是我为Sabre Web Services SabreCommandLLSRQ服务记录的内容:

<!--Use &#231; for Cross of Lorraine-->
<!--Use &#164; for Change-->
<!--Use &#167; for End Item-->

洛林十字架是最常用的一种,但也使用了最终项目和更改。

答案 2 :(得分:0)

SabreCommandLLSRQ 响应返回由双重编码字符串损坏的结果(来自Saber +我们的Java WS框架)。对于Java我有:

public static String decode(String termRsp) {
    try {
        String fromUtf8 = new String(termRsp.getBytes("ISO-8859-1"), "UTF-8");
        String fromLatin1 = new String(fromUtf8.getBytes("ISO-8859-1"), "windows-1252");
        return fromLatin1;
    } catch (UnsupportedEncodingException e) {
        return termRsp;
    }
}

似乎许多Windows代码页编码都可以进行最终转换。它们在相同的代码位置带有匕首‡/日元¥/货币¤/节§符号:

https://sds.sabre.com/XTRANET_Access/sabre.htm(在cp1252中可以看到Saber编码与ALT Entry之间的对应关系。