【问题标题】:VB.NET - Convert Unicode in one TB to Shift-JIS in another TBVB.NET - 将一个 TB 中的 Unicode 转换为另一个 TB 中的 Shift-JIS
【发布时间】:2010-06-10 21:09:36
【问题描述】:

尝试开发一个文本编辑器,我有两个文本框,每个文本框下方都有一个按钮。

当按下 textbox1 下方的按钮时,它应该将 Unicode 文本(意为日文)转换为 Shift-JIS。

之所以这样做,是因为VOCALOID2软件只允许将ANSI和Shift-JIS编码的文本粘贴到歌词系统中。该应用程序的用户通常已经将他们的键盘设置为日语,但它输入的是 Unicode。

当 SJIS 在 System.Text.Encoding 类型中不可用时,如何将 Unicode 文本转换为 Shift-JIS?

【问题讨论】:

    标签: vb.net unicode text encoding


    【解决方案1】:

    谢天谢地,不是它的工作方式。只要您在 .NET 程序中处理文本,包括 TextBox.Text 属性,就只有 一种 编码,即 UTF-16。当你需要与外界打交道时,无论是文件还是 P/Invoked 函数,那么你需要在 Shift-Jis 和 UTF-16 之间进行转换。这很简单:

            var enc = Encoding.GetEncoding("shift-jis");
            var value = enc.GetBytes("hello world");
    

    将“值”的值传递给任何需要 Shift-JIS 编码值的代码。确保它不是 TextBox,它不知道如何显示字节,它只知道 UTF-16。

    【讨论】:

    • 糟糕,使用 Dim 代替 var。
    • RichTextBox 就足够了吗?我已经实现了它,但是作为文本框它是行不通的。也感谢您的第一次回复!
    • 我尝试使用 RichTextBoxes,效果非常棒!非常感谢!
    • 好吧,我已经修改了一些代码。我无法获得价值(我更改了 var 名称,但仍然)工作,所以我这样做了: Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift-jis") My.Computer .FileSystem.WriteAllText("C:\q.w", TextBox1.Text, False, System.Text.Encoding.UTF8) TextBox2.Text = My.Computer.FileSystem.ReadAllText("C:\q.w", enc) My.Computer .FileSystem.DeleteFile("C:\q.w")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2015-05-18
    • 1970-01-01
    • 2012-08-02
    • 2022-07-01
    • 2017-07-21
    相关资源
    最近更新 更多