社区
VB基础类
帖子详情
VB6中怎么输入商标符号(TM)?
nancysmith
2008-04-07 09:33:48
从别的地方复制到Vb开发环境中显示的是?。
我的目的是想替换掉一串字符串中的商标符号。
请高人指导一下。
比较着急。
...全文
1372
12
打赏
收藏
VB6中怎么输入商标符号(TM)?
从别的地方复制到Vb开发环境中显示的是?。 我的目的是想替换掉一串字符串中的商标符号。 请高人指导一下。 比较着急。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
meiZiNick
2008-05-01
打赏
举报
回复
有点难度哦
m60a1
2008-04-13
打赏
举报
回复
晕???????????-_- ~~~~~~~
nicon
2008-04-12
打赏
举报
回复
用Unicode应该可以
舉杯邀明月
2008-04-12
打赏
举报
回复
商标字符
™
舉杯邀明月
2008-04-12
打赏
举报
回复
你要的是这个字符吗?
™
cbm6666
2008-04-08
打赏
举报
回复
去找特殊字符放大吧, R 的商标就自己画个大圆, 中间放个R 就好啦.....
nancysmith
2008-04-08
打赏
举报
回复
cbm666 说的什么意思,没有明白
东方之珠
2008-04-08
打赏
举报
回复
支持一把!
nancysmith
2008-04-07
打赏
举报
回复
So Long, 看得我是比较头晕。明天再看
用户 昵称
2008-04-07
打赏
举报
回复
特殊字符的输出问题 iostream中输出®如何输出
wstring str;
TCHAR ch[]= {0x00AE,0x0000};
str = ch;
wcout<<str<<endl;
其中0x00AE为®的unicode编码,®为一个圈,中间是一个R,即注册标记的意思。
找了半天,没有找到怎么打印出来这个。
回复内容
【thinkinnight】:
汗,特殊字符为一个圈,中间是一个R,即注册标记的意思
在CSDN上面似乎显示不出来
【HewpKanXue】:
®
mark
【chenyu2202863】:
帮你顶
【thinkinnight】:
自己再up一下
【HewpKanXue】:
哈哈,好高兴啊,终于发现原因了,是控制台输出的代码页设置问题
我们用中文的代码页一般是936,而936上没有UNicode 码\u00ae对应的定义,所以没法显示
而英文的代码页对应的的就有。所以只要将输出设备的代码页改过来就好了。
我们只要找到随便找到一个代码页,对应表上有这个字符的定义就可以用。
我们就用英文的1252好了,例子:
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
wstring str;
TCHAR ch[]= {0x00AE,0x0000};
str=ch;
setlocale(LC_ALL,".1252");
int original_codepage=GetConsoleCP(); //保存原设置。
int oCodePage =GetConsoleOutputCP();
SetConsoleCP(1252);
SetConsoleOutputCP(1252);
wcout<<L'\u00e0'<<'\n';
wcout<<L'\u00e1'<<'\n';
wcout<<L'\u00e2'<<'\n';
wcout<<L'\u00e3'<<'\n';
wcout<<L'\u00e4'<<'\n';
wcout<<L'\u00e5'<<'\n';
wcout<<L"\u00ae"<<'\n';
wcout<<str<<endl;
wcout<<str.c_str()<<endl;
wcout<<ch<<endl;
setlocale(LC_ALL,"C"); //恢复现场
SetConsoleCP(original_codepage);
SetConsoleOutputCP(oCodePage);
system("pause");
return 0;
}
说明: 例子里用到了设置控制台代码页的API函数,在platform SDK里面。
【thinkinnight】:
呵呵,上面这位兄弟,多谢你的回答,我也是怀疑代码页的问题,不过对这个不熟,没有查到相关的资料。
你的程序我试了,的确是可以运行的。但是,实在不好意思,其实是一个比较连贯的问题,我将其分解了,只提出一部分,结果这个解决了,又出现新的问题。
我的输出是使用locale('chs')的,因为我同时也需要输出中文,
TCHAR ch[] = {0x00AE,0x0000};
TCHAR ch2[] = _T("紫光拼音");
wstring str = ch;
wstring str2 = ch;
wcout.imbue(locale("chs"));
wcout<<str<<endl;
wcout<<str2<<endl;
我试用了你的程序之后,发现中文又显示不出来了,难道就没有两全其美的方法吗?
这个的确是比较奇怪,其实也是今天做一个小程序的时候发现的,我说一下我这个问题的背景吧,我是写一个根据输入读注册表,然后删除相关键值的小程序的,打印出来遍历的键值是为了方便调试,但是一开始发现中文无法输出,这个问题已经解决了,就是使用wcout.imbue(locale("chs"));来设置一下,不过又发现了在键值中有特殊符号,这就是我提这个问题的原因了。
因为程序是在另一台机器上,现在没有。但是具体的环境为winxp英文版, VS2005英文版,本地的设置是设置为"china"的。
【thinkinnight】:
帖子我肯定会结的,不过我希望能够再保留一段时间,看看对于这整个问题,有没有什么解决的方法,多谢!
【thinkinnight】:
而且我发现,在word中输入中文和刚刚的特殊字符是可以的,不知道它是怎么实现的
【HewpKanXue】:
wstring str=L"y原来可以直接支持Unicode的API\u00AE自己\r\n";
TCHAR ch[]= {L"ayUnicode看来是必然的选择的API\u00AE高兴\r\n"};
DWORD len=0;
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),ch,lstrlen(ch),&len,NULL);
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),str.c_str(),lstrlen(str.c_str()),&len,NULL);
【thinkinnight】:
good,要的就是这个效果,不知道老兄是怎么查的资料,呵呵
但是wcout为什么就是显示不出来,而writeconsole就能够显示呢?这个原理还是没有搞清楚
【thinkinnight】:
现在又发现一个奇怪的地方,writeconsole是可以打印出来的,但是重定向功能没有了,于是google了一下,发现writefile可以做,但是使用writefile代替后,又是乱码了
先使用的是代替1: WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),str.c_str(),lstrlen(str.c_str()),&len,NULL);
发现不行之后,又去查了一下,修改为
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),str.c_str(),lstrlen(str.c_str())*sizeof(TCHAR),&len,NULL);
结果还是不行
这个能否解决呢?多谢多谢
【thinkinnight】:
问题已经找到,看来单一的方案是无法解决的,
writefile在写文件的时候,需要在文件头加上0xfeff来表明是unicode文件,但是在标准输出的时候,却没有办法加上这个标志,于是似乎就是不可能的了。
已经生成正确的unicode文件成功了,
方法就是加上这个文件头。
现在的方法只能是先创建一个unicode的文件,然后向里面写了。
多谢上面兄弟的回答,结贴
【HewpKanXue】:
哭,早说清楚啊
看我blog上,有写Unicode文件的方法。
你只是要写文件,何必在控制台上折腾呢,写文件和控制台使用的codecvt方式不同。
所以多字符集使用控制台和文件是有区别的。
本地化的结果也不同,而只有对ASCII字符集才没有区别。
【thinkinnight】:
我本来是想输出在控制台,然后使用重定向写到文件中查,这样一个是比较方便,还有就是可以比较灵活的切换,既可以在控制台看,也可以在文件中看。不过看来只是一个美好的愿望了,正如ls所说的“多字符集使用控制台和文件是有区别的”,所以只能分别对待了。
呵呵,不好意思了。
【thinkinnight】:
在这里找到一个,不过还是只能显示中文
http://blogs.msdn.com/junfeng/archive/2004/02/25/79621.aspx
DWORD dwBytesWritten=0;
int noutputcp = GetConsoleCP();
int charCount = WideCharToMultiByte(noutputcp,0,str.c_str(),-1,0,
0,0,0);
char* szaStr = (char*) malloc(charCount);
WideCharToMultiByte(noutputcp,0,str.c_str(),-1,szaStr,charCount,
0,0);
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), szaStr, charCount-1, &dwBytesWritten, 0);
free(szaStr);
似乎writefile写到标准输出的时候,使用的是ANSI集
【thinkinnight】:
说错了,应该是WideCharToMultiByte转换的时候就转换出错了
nancysmith
2008-04-07
打赏
举报
回复
ascii 码表里面是没有这个的
用户 昵称
2008-04-07
打赏
举报
回复
用chrw$(ascii码)来表达。
Python 寄存器位域解析与 JSON 配置工具(芯片开发+寄存器/位域+解析源码+寄存器转储分析)
根据 JSON 指定位宽和字段起止位,解析寄存器数值并显示枚举含义。包含重叠字段、重复名称、位范围和
输入
数值检查。 适用于嵌入式软件开发人员、驱动开发入门者及相关技术学习者。资源包含源码或模板、使用说明及验证范围说明。Python 3.10+,仅使用标准库;寄存器宽度 1 至 64 位。 功能边界见 README.md,实际验证情况见 TESTING.md。
MATLAB实现的两级OPF与电动车充电调度,用于配电网络.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
UAC白名单设置-软件使用
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 用户账户控制(UAC)白名单的配置 Windows7环境
中
UAC(User Account Control,用户帐户控制)是由微软在Windows Vista版本
中
推出的一项旨在增强系统安全性的创新技术,该技术强制要求用户在执行可能干扰计算机正常运作的操作或进行更改会波及其他用户设置的变动前,必须提供相应的权限或管理员密码进行验证。通过对这些操作启动前进行授权确认,UAC能够有效阻止恶意软件及间谍软件在未获授权的状态下于计算机内进行安装或实施修改。 自从Vista版本问世以来,微软便开始推行这一全新的安全机制,可视为对系统安全防护的显著提升。尽管UAC确实能够在一定程度上对某些非法程序起到防御作用,但与此同时,这一功能也给众多用户带来了诸多不便。 因此,许多用户开始探寻是否存在类似于白名单的功能,以便将那些值得信赖的程序直接赋予运行权限。事实上,这类功能确实存在,不过微软并未将其作为标准配置提供。 网络上关于此问题的绝大多数建议都是建议禁用UAC,这种说法显然缺乏针对性,因为若用户希望禁用此功能,本就不会提出相关疑问。 通过运用微软官方发布的Microsoft Application Compatibility Toolkit 5.6版本,可以将信任的程序纳入系统白名单范畴。 获取Application Compatibility Toolkit 安装程序成功后会出现三个可执行文件 以管理员身份启动Compatibility Administrator 在Custom DataBases部分创建新的数据库,并添加一个Application Fix(在下方空白处点击右键,选择...
VB基础类
7,788
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章