2

現在、HtmlDocument を使用して Google 翻訳 Web サイトにアクセスするスペイン語翻訳プログラムに取り組んでいます。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 を適切に実装するためのコード、または特殊文字に関する問題を修正するためのコードを誰かが知っていれば、どんな助けも大歓迎です。

4

2 に答える 2

1

まず第一に、UTF16は必要ありません。スペイン語の文字(および実際には任意のUnicode文字)はUTF8で表すことができます。ただし、直接の質問に答えるにはSystem.Text.UnicodeEncoding、UTF16(リンク)を使用する必要があります。

あなたが抱えている問題はどこかにあります。

于 2012-11-06T16:16:02.227 に答える
0

次の画像でわかるように、トランスレータとエンコーディングを確認しました。私が確信していたように、UTF-8を使用する必要があるのはUTF-8だけのようです。ご覧のとおり、翻訳者の応答のエンコーディングも UTF-8 です。これは、自然言語を使用するための世界で最も完全なエンコーディングです。

ここに画像の説明を入力

乾杯

于 2012-11-06T16:12:29.383 に答える