現在、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 + "'";
}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 を適切に実装するためのコード、または特殊文字に関する問題を修正するためのコードを誰かが知っていれば、どんな助けも大歓迎です。