You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的程序返回的部分西班牙语字符显示为Unicode编码?

问题:西班牙语特殊字符显示为Unicode编码的解决办法

我编写了一个简单的Maven程序,调用DEVISTY的文本翻译API并展示结果。API网站端点的翻译显示正常,但在程序中以字符串展示时,倒问号、带重音的'e'等西班牙语字符显示为Unicode编码。尝试转换为UTF-8编码,但结果依旧。相关代码如下:

package myprogram.translator;

import java.net.URLEncoder;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import java.util.Scanner;

import org.apache.commons.codec.binary.StringUtils;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args ) throws Exception
    {
        stringGen gen = new stringGen();
        
        // TEST APPLICATION(lets hope it runs)
        
        Scanner scan = new Scanner(System.in);
        
        String startL;
        String targetL;
        String translateThis;
        String end;
        
        System.out.println("What would you like to be your starting language?");
        startL = scan.nextLine();
        System.out.println("What would you like to be your target language?");
        targetL = scan.nextLine();
        System.out.println("What would you like to translate exactly?");
        translateThis = scan.nextLine();
        
        end = gen.finalInput(startL, targetL, translateThis);
        
        System.out.println(end);
        
        HttpResponse<String> letsgetit = Unirest.post("https://text-translator2.p.rapidapi.com/translate")
                .header("content-type", "application/x-www-form-urlencoded")
                .header("X-RapidAPI-Key", "ef0ddf5c2dmsh5ccc18a926d497cp1b6b93jsn9f9e3bdc6353")
                .header("X-RapidAPI-Host", "text-translator2.p.rapidapi.com")
                .body(end)
                .asString();
        
       String hutas = letsgetit.getBody();
        
       byte[] bytes = StringUtils.getBytesUtf8(hutas);
       
       String utf8EncodedString = StringUtils.newStringUtf8(bytes);
       
       System.out.println(utf8EncodedString);
    }
}

解决办法

问题根源

你当前用asString()直接获取响应后做的UTF-8编码转换完全无效——API返回的是JSON格式,其中特殊字符是以Unicode转义序列(如\u00BF、\u00E9)存在的,普通字符串转换无法解析这些转义,必须通过JSON解析器处理。

修改步骤

  1. 把HttpResponse<String>替换为HttpResponse<JsonNode>,用asJsonNode()获取响应,让Unirest自动解析JSON结构。
  2. 从JSON节点中直接提取翻译结果,JSON解析器会自动将Unicode转义序列转换为对应的特殊字符。
  3. 删除所有StringUtils相关的编码转换代码,这步操作对解决问题没有帮助。

修改后的代码

package myprogram.translator;

import java.util.Scanner;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;

public class App 
{
    public static void main( String[] args ) throws Exception
    {
        stringGen gen = new stringGen();
        
        Scanner scan = new Scanner(System.in);
        
        String startL;
        String targetL;
        String translateThis;
        String end;
        
        System.out.println("请输入源语言:");
        startL = scan.nextLine();
        System.out.println("请输入目标语言:");
        targetL = scan.nextLine();
        System.out.println("请输入要翻译的内容:");
        translateThis = scan.nextLine();
        
        end = gen.finalInput(startL, targetL, translateThis);
        
        System.out.println("请求体内容:" + end);
        
        // 改为获取JsonNode类型的响应,自动解析JSON
        HttpResponse<JsonNode> letsgetit = Unirest.post("https://text-translator2.p.rapidapi.com/translate")
                .header("content-type", "application/x-www-form-urlencoded")
                .header("X-RapidAPI-Key", "ef0ddf5c2dmsh5ccc18a926d497cp1b6b93jsn9f9e3bdc6353")
                .header("X-RapidAPI-Host", "text-translator2.p.rapidapi.com")
                .body(end)
                .asJsonNode();
        
        // 从JSON对象中提取翻译结果,自动处理Unicode转义
        String translatedText = letsgetit.getBody().getObject().getString("translatedText");
        
        System.out.println("翻译结果:" + translatedText);
    }
}

额外注意

  • 确保stringGen.finalInput()方法正确对请求参数做URL编码,避免特殊字符导致请求失败。
  • 如果控制台仍显示乱码,检查IDE或终端的字符编码设置,确保其使用UTF-8编码显示输出。

内容的提问来源于stack exchange,提问作者a true scotsman uth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:47:10