我正在使用 Assembly C# 编写 Unity 项目。我尝试获取特殊字符,例如 é,但在控制台中只显示空白字符:" "。例如将"How are you?"翻译为"¿Cómo estás?",但它返回"Cmo Ests"。我将返回的字符串"Cmo Ests"放入字符数组中并意识到它是一个非空的空白字符。我正在使用 Encoding.UTF8,当我执行以下操作时:
char ch = '\u00e9';
print (ch);
它将打印出“é”。我尝试使用以下代码从给定的字符串中获取字节:
byte[] utf8bytes = System.Text.Encoding.UTF8.GetBytes(temp);
在翻译"How are you?"时,它会返回一个字节字符串,但对于像é这样的特殊字符,我得到了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;
}
}