मैं एकता में एक परियोजना पर काम कर रहा हूं जो असेंबली सी # का उपयोग करता है। मैं विशेष चरित्र प्राप्त करने की कोशिश करता हूं, लेकिन कंसोल में यह सिर्फ एक खाली वर्ण प्रदर्शित करता है: ""। उदाहरण के लिए "आप कैसे हैं?" अनुवाद "कॉमो एस्टास" वापस लौटना चाहिए, लेकिन यह "सीएमओ एस्ट्स" लौटाता है। मैंने एक चरित्र सरणी में रिटर्न स्ट्रिंग "सीएमओ एस्ट्स" रखा और महसूस किया कि यह एक गैर-खाली खाली चरित्र है। मैं Encoding.UTF8 उपयोग कर रहा हूँ, और जब मैं कार्य करें:किसी चरित्र के डेटा को कैसे प्राप्त करें
char ch = '\u00e9';
print (ch);
यह प्रिंट होगा "é"। मैं का उपयोग कर एक दिया स्ट्रिंग के बंद बाइट्स हो रही है की कोशिश की: "आप कैसे हैं"
byte[] utf8bytes = System.Text.Encoding.UTF8.GetBytes(temp);
जबकि अनुवाद है, यह एक बाइट स्ट्रिंग वापस आ जाएगी, लेकिन इस तरह é विशेष वर्ण के लिए, मैं की श्रृंखला मिल बाइट्स 23 9, 1 9 1, 18 9, जो एक प्रतिस्थापन चरित्र है।
अक्षरों से पुनर्प्राप्त करने के लिए मुझे किस प्रकार की जानकारी की आवश्यकता है ताकि यह निर्धारित किया जा सके कि यह कौन सा चरित्र है? क्या मुझे ऐसी जानकारी के साथ कुछ करने की ज़रूरत है जो 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;
}
}
आपको उस कोड को शामिल करना चाहिए जो प्रतिक्रिया उत्पन्न कर रहा है। –
मुझे नहीं पता कि समस्या क्या है, ईमानदारी से। मैं आपके प्रश्न में जो देखता हूं वह यह है कि आप जो भी मांग रहे हैं वह आपको मिल रहा है। यदि आप यूटीएफ 8 बाइट्स के लिए पूछते हैं, तो आपको यूटीएफ 8 बाइट्स मिलेंगे। 23 9, 1 9 1, 18 9 आपके एकल यूनिकोड चरित्र के लिए यूटीएफ 8 एन्कोडिंग हैं। आप यूनिकोड को UTF8 से अनुवाद करने के लिए की जरूरत है, कि कार्य करें: http://stackoverflow.com/questions/11293994/how-to-convert-a-utf-8-string-into-unicode – plinth
क्या आपके 'प्रिंट करता है() विधि क्या है? यदि आप अपने यूटीएफ 8 बाइट्स को पात्रों के रूप में पेश करने का प्रयास कर रहे हैं, तो आपको समस्याएं आ सकती हैं। यूटीएफ 8 वर्ण 1 बाइट से अधिक लंबे हो सकते हैं। –