日语汉字转化为平假名
这周围绕[日语汉字转化为平假名](asp.net(c#))的问题,查阅了大量的资料,花费了很多时间和精力还没有解决这个问题,下面就自己解决问题的几个思路叙述一下,希望各位达人给与指教。1, GetPhonetic
在asp.net(vb)中,用下面的这段代码很容易就实现,
Dim name As String
name = myName.Text.Trim().ToString()
Dim spacename As String
spacename = Strings.Replace(name, " ", "") '全角のスペース
spacename = Strings.Replace(spacename, " ", "") '半角のスペース
myFurigana.Text = CreateObject("Excel.Application").GetPhonetic(spacename)
微软为了推广他们的VBA,IFELanguage::GetPhonetic这个接口直接已经嵌入到里面了,只要引入Imports Microsoft.VisualBasic后,直接使用就ok了,可是在asp.net(c#)中,尽管引入了using Microsoft.VisualBasic,编译的时候出现了[object的GetPhonetic未定义]这样的错误,也就是说在asp.net(c#)中怎么去连接windows的接口呢?
2, Windows控件嵌入到.net中,.net中的windows控件只能在前台操作,我怎么去实现windows控件的触发事件呢?
c#自定义的日语汉字转化为平假名的textbox ,参考的是
http://cyzhou.spaces.live.com/blog/cns!C7264561BBA7DCEF!145.entry
3,使用KeyPress的事件,取得KeyAscii,如果KeyAscii得不到,再用KeyCode的组合,这种方法现在我还没有试验,这种方法尽管要考虑到很多种情况,很麻烦,估计能实现,但这不是根本解决对策。
--------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 各位路过的达人给与指教 --------------------编程问答-------------------- up --------------------编程问答-------------------- 日语汉字... --------------------编程问答-------------------- ... --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 日语汉字,举例:输入了[山田]能够得到[ヤマダ]
--------------------编程问答-------------------- up --------------------编程问答-------------------- UP --------------------编程问答-------------------- up --------------------编程问答-------------------- public class MyForm : Form
{
//声明一些API函数
[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hwnd);
[DllImport("imm32.dll")]
public static extern bool ImmGetOpenStatus(IntPtr himc);
[DllImport("imm32.dll")]
public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
[DllImport("imm32.dll")]
public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2);
[DllImport("imm32.dll")]
public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
private const int IME_CMODE_FULLSHAPE = 0x8;
private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
//重载MyForm的OnActivated
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
IntPtr HIme = ImmGetContext(this.Handle);
if (ImmGetOpenStatus(HIme)) //如果输入法处于打开状态
{
int iMode = 0;
int iSentence = 0;
bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence); //检索输入法信息
if (bSuccess)
{
if ((iMode & IME_CMODE_FULLSHAPE) > 0) //如果是全角
{
ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE); //转换成半角
}
}
}
}
/// <summary>
///
/// </summary>
public void SetIme()
{
IntPtr HIme = ImmGetContext(this.Handle);
if (ImmGetOpenStatus(HIme)) //如果输入法处于打开状态
{
int iMode = 0;
int iSentence = 0;
bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence); //检索输入法信息
if (bSuccess)
{
if ((iMode & IME_CMODE_FULLSHAPE) > 0) //如果是全角
{
ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE); //转换成半角
}
}
}
}
} --------------------编程问答-------------------- UP --------------------编程问答-------------------- 1,c#应该跟vb不同库吧!!你应该是引用错误了!!
2,VBA里面不是可以后台操作吗? --------------------编程问答-------------------- 呵呵,学习 --------------------编程问答-------------------- 首先谢谢大家的关注,
To TZSZK的回答:
建立了一个继承于form的类,也就是说要在asp.net(c#)引用这个windows控件,那怎么使用这个windows控件的触发事件呢,或者说在.net中使用的windows控件怎么去触发它的事件呢?
To chuxue的回答:
其实解决这个问题的关键是在asp.net(c#)中引入IFELanguage::GetPhonetic这个接口,我在日文的网站也查了很多资料,[日语汉字转化为平假名]解决这个问题的.tbl都不是免费的。
--------------------编程问答-------------------- private void TextBox_Enter(object sender, EventArgs e)
{
SetIme();
} --------------------编程问答-------------------- mark --------------------编程问答-------------------- 非常感谢tzszk的回答 ^^
今年3月份找一个在.net中的combox的资料时,涉及到了在.net的环境中建立windows控件的问题,当时找到了一个.dll文件,因为人的惰性也没有具体学习,昨天找了很多资料学习,在.net的页面中嵌套helloword的小例子后,使用tzszk说明方法,没有成功,说明一下操作的步骤:
1,Windows 控件库
①建立一个Windows 控件库项目取名为CSDNTextBox
② 建立了类public class MyForm:Form
②UserControl改名为MyTextBox,添加一个textbox
private void textBox1_Enter(object sender, System.EventArgs e)
{
MyForm formmy1=new MyForm();
formmy1.SetIme();
}
2, 创建html
<html>
<body>
<p>my textbox<br> <br></body>
<object id="MyTextBox1"
classid="http:CSDNTextBox.dll#CSDNTextBox.MyTextBox"
height="500" width="500" VIEWASTEXT>
</object>
<br><br>
</html>
http://localhost/kanaTextbox/CSDNtextbox.html运行后,出现下列的错误
[System.Security.Permissions.SecurityPermission]
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\web_hightrust.config中
<IPermission
class="SecurityPermission"
version="1"
Flags="Assertion, Execution, ControlThread, ControlPrincipal, RemotingConfiguration"
/>
改为
<IPermission
class="SecurityPermission"
version="1"
Flags="AllFlags"
/>没有了错误提示,可是页面除了<body>
<p>my textbox<br> <br></body>没有显示出textbox
实在是想不明白,请求tzszk给与指教。
--------------------编程问答-------------------- 勉強しています --------------------编程问答-------------------- up --------------------编程问答-------------------- UP --------------------编程问答-------------------- tzszk 你用的是vb还是vc --------------------编程问答-------------------- up
--------------------编程问答-------------------- up
--------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 学习下 --------------------编程问答-------------------- UP --------------------编程问答-------------------- 友情UP一下 --------------------编程问答-------------------- 汗,我觉得lz还是找一找相关的字词库
日文汉字又分音读和训读,音读的话一个字在不同的词中又有好几种读法,啊头大头大 --------------------编程问答-------------------- 这个问题搂主解决了没?我现在也遇到了。 --------------------编程问答-------------------- jf --------------------编程问答-------------------- 这个问题小弟解决了,哈哈!
首先引入 Excel.dll 和 Microsoft.VisualBasic.dll
//振り仮名の取得のメソッド
public static string GetKatakana(string Hiragana)
{
string Katakana = string.Empty;
// Application対象の定義
Excel.Application app = new Excel.Application();
// 振り仮名の取得
Katakana = app.GetPhonetic(Hiragana);
// 半角振り仮名の取得
Katakana = GetKatakanaHalf(Katakana);
// 結果の返却
return Katakana;
}
//半角振り仮名の取得のメソッド
public static string GetKatakanaHalf(string Katakana)
{
string KatakanaHalf = string.Empty;
// 全角片仮名の取得
KatakanaHalf = Microsoft.VisualBasic.Strings.StrConv(Katakana, Microsoft.VisualBasic.VbStrConv.Narrow,0);
// 結果の返却
return KatakanaHalf;
} --------------------编程问答-------------------- ding --------------------编程问答-------------------- 山田
井上
村上
田中
房内
水中
空中
地上
天上 --------------------编程问答-------------------- lz有没有解决问题?最近也遇到相同问题。 --------------------编程问答-------------------- 路过帮顶! --------------------编程问答--------------------
using Excel = Microsoft.Office.Interop.Excel;
补充:.NET技术 , ASP.NET