为什么我的字符串显示奇怪的字符而不是'ñ'?

时间:2015-05-20 19:20:45

标签: java json encryption

我在使用服务之前使用休息服务来发送邮件我已经创建了一个json并加密了它。因此,当我从主类启动我的休息客户端时,主题中的'ñ'字符显示正常,但如果我从struts操作启动相同的代码,我会得到一个奇怪的字符,我比较两种情况下的加密字符串和两种情况加密的字符串是不同的。 这是我的代码,我收到信息放在json中加密它:

 public boolean enviarCorreo(String to, String body, subject) throws InvalidKeyException,
    IllegalBlockSizeException, BadPaddingException,
    NoSuchAlgorithmException, NoSuchPaddingException,
    InvalidAlgorithmParameterException, IOException {
    Gson gson = new Gson();
    Correo correoDTO = new Correo();
    correoDTO.setTo(to);
    correoDTO.setBodyHtml(body);
    String szUT8 = "";
        try {
            byte[] b1;
            b1 = subject.getBytes("UTF-8");
            System.out.println(b1.toString());

            szUT8 = new String(b1, "UTF-8");
            System.out.println(szUT8);              
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   

    correoDTO.setSubject(szUT8);
    String correoNoEncriptado = gson.toJson(correoDTO, Correo.class);
    String encryptedString = SymmetricEncryptionUtility
            .encrypt(correoNoEncriptado);
    String urlStr = "http://localhost:8080/correos/restFull/v1.0/generico/genera";
    String[] paramName = new String[1];
    paramName[0] = "jsonParams";
    String[] paramVal = new String[1];
    paramVal[0] = encryptedString;
    String salida = "";
    try {
        salida = httpPost(urlStr, paramName, paramVal);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    RespuestaCorreo r = gson.fromJson(salida, RespuestaCorreo.class);
    return r.isSuccess();
}

马克所说的诀窍。在我的加密方法中,我改变了

byte[] stringBytes = message.getBytes();

byte[] stringBytes = message.getBytes("UTF-8");

0 个答案:

没有答案