我的系統是英文的XP  上面裝有簡體 和繁體字庫  我在繁體環境下編寫代碼並運行 上面的有些字根本就不是我所指定的GB2312形式顯示  都是問號  也就是說出現亂碼了  請問各位大俠 是怎麼一會事情?

解决方案 »

  1.   

    byte[] BytesArray=System.Text.Encoding.Unicode.GetByte(this.textBox1.Text.ToString));
    //將字符串轉換為Unicode編碼並獲得字節數組
    this.textBox2.Text =System.Text.Encoding.GetEncoding("Big5").GetString(BytesArray);我的系統是英文的XP  上面裝有簡體 和繁體字庫  我在繁體環境下編寫代碼並運行[控制面板裡的區域語言選項-----語言---用於功能表和對話方塊的語言(L)中文繁體]
    [地區選項-----自訂  中文(台灣)]
    [進階-----選擇一個符合於你要使用的非Unicode程式語言版本的語言中文(台灣)]
    為什麼 輸入一個簡體字轉換後還是個簡體  和操作系統是繁體簡體有關嗎? 這兩句代碼是怎麼工作的
    編碼底層是這麼完成轉換的   我這兩句代碼是將顯示在this.textBox1.Text中的簡體轉換成繁體後讓它在this.textBox2.Text中顯示繁體字 怎麼不是我希望的輸入簡體而顯示繁體字呢?
      

  2.   

    Console可能是与操作系统的默认语言有关的。
      

  3.   

    string GetSubString(string origStr,int endIndex)
    {
    byte[] bytes=System.Text.Encoding.GetEncoding("big5").GetBytes(origStr);

    if(endIndex>=bytes.Length)
    return origStr; 
    byte[] subBytes=new byte[endIndex];
    Array.Copy(bytes,0,subBytes,0,endIndex);
    return System.Text.Encoding.GetEncoding("big5").GetString(subBytes)+"...";
    }  this.textBox2.Text =GetSubString(this.textBox1.Text,100 ) ;
    平台跟上面敘述的一樣  者段代碼調用後 輸入簡體 轉換後還是簡體 輸入繁體轉換後還是繁體字
    這句代碼System.Text.Encoding.GetEncoding("big5").GetString怎麼就不管用呢?
      

  4.   

    我想,C#是不可能提供什么方法进行简繁转换的,因为这是两个字符集,虽然也许我们可以知道大部分的简体字和繁体字之间存在一一对应的关系,但他们却是不被认为是同一个字符的两种形态,因为Unicode中包含了简体和繁体中文,他们的Unicode编码是不一样的。换言之'国'和'國'并不是同一个字,否则就没法同时显示在这个网页上了。对于编写不同语言的应用程序,可以参考resx文件。简繁转换最简单好用的工具就是Word,它甚至能识别两种文字的习惯用法。例如它会将"程序"转换成"程式"。
      

  5.   

    為了以後會有更多的人關注我的提問  下面我來使用Word來實現繁體----》簡體    簡體-----》繁體
    轉換方法  前提是Word上裝有繁體和簡體字庫(繁體簡體字的軟件包 )上面能夠自由的實現繁體簡體轉換  
    1 引用COM控件  Microsoft Word 10.0 Object Library    
     [文件一般是放在C:\Program Files\Microsoft Office\Office10\MSWORD.OLB]2  編寫轉換的類文件  名稱為 ConvertGB2312Big5          代碼如下:using System;
    using Word;
    using System.Reflection ;
    using GB2312Big5;namespace GB2312Big5
    {
      public class ConvertGB2312Big5
       {
    public string ConvertGB2312ToBig5EachOther(string stringFont,bool GB2312orBig5)
      {
        object missing = Missing.Value;     Word.Application Word_App = null;
        Word.Document Word_doc=null;     Word_App = new Word.Application();
        Word_doc=new Word.Document();
        AutoCorrect autocorrect = Word_App.AutoCorrect;
        Word.AutoCorrectEntries autoEntries = autocorrect.Entries; 
               
    //     string theEnd= "\n End";
        autoEntries.Add("Inntroduction", "Introduction");     Word.Documents Docs = Word_App.Documents;     Word_App.Visible=true;
        Word._Document my_Doc= (Word._Document) Word_doc;
        Word_doc=Docs.Add(ref missing, ref missing, ref missing, ref missing);     object start = 0;
        object end = 0;
        Word.Range range = Word_doc.Range(ref missing,ref missing);
        range.Text =stringFont;
        if (GB2312orBig5==true)//參數為  true 時,繁體------->簡體
         {
           range.TCSCConverter(Word.WdTCSCConverterDirection.wdTCSCConverterDirectionTCSC,true,true);
         }
       else                    //參數為  false   時,簡體------->繁體
         {
          range.TCSCConverter(Word.WdTCSCConverterDirection.wdTCSCConverterDirectionSCTC,true,true);
         }
        return range.Text ;//返回我們需要的字體
       // Display "The End"
      //  Word_App.ActiveWindow.Selection.InsertAfter(End);
     //   Word_App.ActiveWindow.Selection.Start = 0;
    //    Word_App.ActiveWindow.Selection.End = 0;
           //     Word_App.Activate();     //       Close Microsoft Word
        //       object myBool = Word.WdSaveOptions.wdDoNotSaveChanges;
       //         Word_App.ActiveWindow.Close(ref myBool,ref missing);
      //       Word_App.Quit(ref missing, ref missing, ref missing);
              /*---------因為沒有完美的程序,所以在這裡留點缺憾給你吧!----------*/

    }
        }
    }3  如何測試  在this.textBox1.Text  輸入文字; 在this.textBox2.Text 顯示轉換後的結果 還在 Form1上加一個button1
        編寫代碼如下
       private void button1_Click(object sender, System.EventArgs e)
       {
        ConvertGB2312Big5 convertgb2312big5=new ConvertGB2312Big5 ();
        this.textBox2.Text =convertgb2312big5.ConvertGB2312ToBig5EachOther (this.textBox1.Text ,false);
              
       }
      

  6.   

    象上面這位仁兄 說的有一定的道理  象寫自己的資源文件 來實現界面的當地語系化 我已經實現了 
    但是無法解決 數據庫------數據源裡面的字符實現全球化。  我編寫的各種語種資源文件轉化成 .resource 文件後  完全不依賴操作系統是什麼國家的語言  動態加載我的個人資源文件.resource 真正實現界面的多語言顯示(所有的控件 也包括消息文件)希望那位仁兄能給我
    具體的講講 數據源的全球化當地語系化技術
      

  7.   

    注釋一下我看到的有位大狹的見解 並使代碼更加清晰可讀 並帶上一點更正[看了他的之後再看這裡的代碼你會發現的] 和我的看法
    ---創建日期: 2005-01-13   09-36-52
    ---作者:          PETER
    ---功能:         簡體與繁體相互轉化的函數
    --更新日期:2005-01-13   09-36-52
    CREATE FUNCTION    dbo.ConvertGB2312ToBig5EachOther(
    @str NVARCHAR(4000),    ------被转换的字符串
    @ToBig5 BIT                        -------設置轉換標志 1表示 GB2312------>Big5   0表示Big5------> GB2312
    )RETURNS   NVARCHAR(4000)AS
    BEGIN
                    IF @ToBig5=1
                          SELECT @str=REPLACE(@str,GB2312,Big5)   --------將被转换的字符串@str中的 GB2312 字串  取代Big5字串
                          FROM  CodeTable
                          WHERE  CHARINDEX(@str,GB2312)>0          --------從表CodeTable中的 GB2312 字段列中 尋找被转换的字符串@str 位置 找到 函數返回繁體  否則就返回自身
                     ELSE
                          SELECT @str=REPLACE(@str,Big5,GB2312)
                          FROM  CodeTable
                          WHERE  CHARINDEX(@str,Big5)>0
                          
                     RETURN(@str)
    END