社区
C#
帖子详情
请问Clipboard中从网页上复制的内容时,通过GetData(DataFormats.Html)获取的文本是什么编码的?怎样知道?
ly_0205
2006-02-18 06:21:24
尝试了很久,好像只有utf-8最接近,但是转换出来中文字符还是有很多“?”,都是在中文字符与那种单字节符号相邻的地方。
比如说: 网页上复制的文本是“你好a”,程序中得到的却是“你?a”了。
请问这个问题怎样解决?
谢谢!!
...全文
307
17
打赏
收藏
请问Clipboard中从网页上复制的内容时,通过GetData(DataFormats.Html)获取的文本是什么编码的?怎样知道?
尝试了很久,好像只有utf-8最接近,但是转换出来中文字符还是有很多“?”,都是在中文字符与那种单字节符号相邻的地方。 比如说: 网页上复制的文本是“你好a”,程序中得到的却是“你?a”了。 请问这个问题怎样解决? 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Optione
2006-03-05
打赏
举报
回复
晚上7:00多回来研究了一下,的确是GetData方法使用了不规范的解码.
原因就是上面说的一样,在处理3byte的字符时有问题.
关于UTF8编码方式,请自己参考文档.
正题:
介于以上问题,只有使用API了,
请参考以下DLL函数:
user32.dll
OpenClipboard,GetClipboardData,CloseClipboard,RegisterClipboardFormat
可能需要
kernel32.dll
GlobalLock,GlobalSize,GlobalUnlock
不行就留邮箱吧~(今天同学生日喝多了,先睡觉了)
Optione
2006-03-05
打赏
举报
回复
今天不忙~ 下午帮你仔细研究一下,晚上给你解决方案.
ly_0205
2006-03-04
打赏
举报
回复
请参考:
http://community.csdn.net/Expert/topic/4581/4581937.xml?temp=.7930872
那是我的代码,Encoding.Convert与Encoding.UTF8.GetString得到的结果是一样的,这个我实际尝试过..
我不是想当然就来问的,所以请不要想当然回答,谢谢!!
ly_0205
2006-03-04
打赏
举报
回复
程序中得到的是:“你?”,后面的a也不见了..
ly_0205
2006-03-04
打赏
举报
回复
这个不行,这就是结果:
网页上复制的文本是“你好a”,程序中得到的却是“你?a”了。
我最开始就已经说了..
Optione
2006-03-04
打赏
举报
回复
哈哈~ 没有注意这个问题
CF_HTML文档说的是采用UTF8编码(CF_HTML is entirely text format and uses the transformation format UTF-8),但转换过来有字符丢失,可能是GetData方法本身使用了不规范的解码所制.
UTF8编码本身长度不一(1-3byte),有3byte的字符丢失.
以上是初步结论,没细看,有时间慢慢研究.
Optione
2006-03-02
打赏
举报
回复
本想叫你自己动手的. ^^
附源代码(试试吧),原理其实很简单的,GetDataPresent方法用的是
UTF8编码,你把他转换成Default编码就行了塞.自己动手好.
private string GetHtmlFromClipboard()
{
string result = string.Empty;
IDataObject dataObj = Clipboard.GetDataObject();
if(dataObj.GetDataPresent(DataFormats.Html))
{
string s = dataObj.GetData(DataFormats.Html).ToString();
byte[] b = System.Text.Encoding.Convert(System.Text.Encoding.UTF8,System.Text.Encoding.Default,System.Text.Encoding.Default.GetBytes(s));
result = System.Text.Encoding.Default.GetString(b);
}
return result;
}
ly_0205
2006-03-02
打赏
举报
回复
那么请问你有没有实际转过包含中文字符的超文本?
Optione
2006-03-02
打赏
举报
回复
把UTF8转换成Default编码就可以了~
很难吗?
ly_0205
2006-02-22
打赏
举报
回复
顶起来...
ly_0205
2006-02-21
打赏
举报
回复
顶起来..
veryhappy
2006-02-20
打赏
举报
回复
关注……
ly_0205
2006-02-20
打赏
举报
回复
顶起来.
daixinhou
2006-02-20
打赏
举报
回复
up
ly_0205
2006-02-19
打赏
举报
回复
顶起来
ly_0205
2006-02-19
打赏
举报
回复
不是System.Text.Encoding.Default , System.Text.Encoding.Default解出来所有中文字符都是乱码
vosov
2006-02-18
打赏
举报
回复
System.Text.Encoding.Default
用C#的
Clipboard
类实现
获取
剪贴板的类型信息
一旦我们确定了剪贴板上的数据类型,就可以通过`Get
Data
()`方法
获取
具体的数据。例如,
获取
剪贴板上的
文本
: ```csharp string
clipboard
Text = (string)
Clipboard
.Get
Data
(
Data
Format
s.Text); ``` 在实际应用
中
,...
VB.NET
中
实现
文本
的
复制
粘贴(调用剪贴板)
要从剪贴板
获取
文本
,我们可以使用Get
Data
Object方法,然后通过
Data
Object的Get
Data
方法
获取
文本
: ```vb.net Dim
data
Object As Object =
Clipboard
.Get
Data
Object() If
data
Object IsNot Nothing AndAlso
data
...
C#
获取
剪切板
内容
我们可以通过
Clipboard
.Contains
Data
()方法检查剪切板
中
是否存在特定类型的数据,然后使用Get
Data
()方法
获取
。例如,检查剪切板
中
是否有
HTML
格式的数据: ```csharp if (
Clipboard
.Contains
Data
(
Data
Format
s.
Html
))...
练习C#的剪切板
复制
粘贴功能
剪切板可以同
时
存储多种数据格式,通过
Clipboard
类的多种Set
Data
和Get
Data
方法,可以选择需要的格式进行操作。 5. **事件处理**: 如果需要监听剪切板的变化,可以订阅
Clipboard
类的
Data
Changed事件。这样当剪切...
剪切板使用_C#_剪切板_
- **
复制
文本
**:可以使用
Clipboard
类的Set
Data
Object方法将
文本
复制
到剪切板。例如: ```csharp string textToCopy = "这是要
复制
的
文本
";
Clipboard
.Set
Data
Object(textToCopy, true); ``` - **
获取
文本
**:使用...
C#
111,088
社区成员
642,553
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章