【问题标题】:Spanish Characters in C#C# 中的西班牙语字符
【发布时间】:2012-10-26 15:10:14
【问题描述】:

我目前正在开发一个使用 HtmlDocument 访问 Google 翻译网站的西班牙语翻译程序。我在 Unity 中用汇编 C# 编程。下面显示的是我当前访问 Google 的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using System.Collections;
using System.Net;
using HtmlAgilityPack;


public class Dictionary{
    string[] formatParams;
    HtmlDocument doc;
    string returnString;
    char[] letters;
    public Dictionary(){
        formatParams = new string[2];
        doc = new HtmlDocument();
        returnString = "";
    }
    public string Translate(String input, String languagePair, Encoding encoding)
    {
        formatParams[0]= input;
        formatParams[1]= languagePair;
        string url = String.Format("http://www.google.com/translate_t?hl=en&ie=UTF8&text={0}&langpair={1}", formatParams);

        string result = String.Empty;

        using (WebClient webClient = new WebClient())
        {
            webClient.Encoding = encoding;
            result = webClient.DownloadString(url);
        }       
        doc.LoadHtml(result);
        input = alter (input);
        return doc.DocumentNode.SelectSingleNode("//span[@title='"+input+"']").InnerText;
    }
    // Use this for initialization
    void Start () {

    }
    string alter(string inputString){
        returnString = "";
        letters = inputString.ToCharArray();
        for(int i=0; i<inputString.Length;i++){
            if(letters[i]=='\''){
                returnString = returnString + "&#39;";  
            }else{
                returnString = returnString + letters[i];   
            }
        }
        return returnString;
    }
}

代码访问者:

    search = new Dictionary();
    input = " ";
    temp = " ";
    returnString = "";
    code = Encoding.UTF8;

    search.Translate(input,"en|es",code);

此代码运行成功,如果您输入“Hello”作为输入,它将返回“Hola”。但是,如果您将输入设置为“你好吗?”它将返回“Cmo ests”。我进行了研究,发现使用 UTF8 不会显示特殊字符,而我需要西班牙语(和其他语言)。我已经读到使用 UTF16 可以解决这个错误,但是,当我写的时候:

code = Encoding.UTF16;

弹出另一个错误说:

Assets/GUIScript.cs(26,33): error CS0117: `System.Text.Encoding' does not contain a definition for `UTF16'

如果有人知道正确实现 UTF16 或解决我的特殊字符问题的代码,我们将不胜感激。

【问题讨论】:

  • 统一标签适用于 Microsoft Unity。请不要滥用它。

标签: c# unity3d .net-assembly utf


【解决方案1】:

如下图所示,我确实检查了翻译器和编码。似乎 UTF-8 是您唯一应该使用的东西,因为我确信这一点。如您所见,翻译器响应的编码也是 UTF-8。它是世界上使用自然语言最完整的编码。

干杯

【讨论】:

    【解决方案2】:

    首先,您不需要 UTF16。西班牙字符(实际上,任何 Unicode 字符)都可以用 UTF8 表示。但要回答您的直接问题,您应该使用 System.Text.UnicodeEncoding 表示 UTF16 (link)。

    您遇到的问题在其他地方。

    【讨论】:

    • 每当我使用:code = Encoding.UTF8Encoding;我收到一条错误消息,指出 System.Text.Encoding 不包含 UTF8Encoding 的定义。另外,如果我不需要 UTF16,如何使用 UTF8 来显示我的西班牙语字符?
    • 对不起,你是对的,有一个静态属性 System.Text.Encoding.UTF8。你也可以改用new System.Text.UTF8Encoding。无论如何,我不相信这是问题所在,我相信其他地方存在错误。
    猜你喜欢
    • 2023-03-18
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 2020-07-10
    相关资源
    最近更新 更多