Assembly C# を使用する Unity のプロジェクトに取り組んでいます。é などの特殊文字を取得しようとしましたが、コンソールには空白文字 "" が表示されます。たとえば、「How are you?」を翻訳します。"Cómo Estás?" を返す必要がありますが、"Cmo Ests" を返します。戻り文字列「Cmo Ests」を文字配列に入れて、null 以外の空白文字であることに気付きました。私は Encoding.UTF8 を使用しています。
char ch = '\u00e9';
print (ch);
「é」と出力されます。次を使用して、特定の文字列からバイトを取得しようとしました。
byte[] utf8bytes = System.Text.Encoding.UTF8.GetBytes(temp);
「お元気ですか?」を翻訳している間はバイト文字列を返しますが、é などの特殊文字については、置換文字である一連のバイト 239、191、189 を取得します。
キャラクターを正確に特定するには、キャラクターからどのような種類の情報を取得する必要がありますか? 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 char[] charString;
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);
string temp = doc.DocumentNode.SelectSingleNode("//span[@title='"+input+"']").InnerText;
charString = temp.ToCharArray();
return temp;
}
// 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;
}
}