为啥用visual studio2012编程时输入汉字显示为问号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥用visual studio2012编程时输入汉字显示为问号相关的知识,希望对你有一定的参考价值。

用visual studio2012编程时输入汉字显示为问号是设置错误造成的,解决方法为:

1、打开visual studio 2012。

2、选择工具--选项。

3、选择“文本编辑器”。

4、选择语言,例如html

5、勾选右边的“行号”。

6、点击“确定”按钮即可。

参考技术A 某些 WINDOWS 8.1或 WIN10系统上会出现
软件界面编辑框输入汉字变成问号的情况,即汉字无法输入,只能输入英文字母。这是很恼人的问题,很多人为此重装了系统很多次问题也依旧存在。
经多种方法测试,
发现这种问题的形成原因主要是 unicode编码转换问题,一般出现此类问题的电脑上都安装了美式Query键盘,在语言设置选项中 将此 美式键盘
删除后,再运行软件,发现可以正常输入汉字了。
以WIN10为例,具体操作过程为:左下角“开始”图标--设置--时间和语言--区域和语言--右侧语言项中找到
windows显示语言,点击选中--点“选项”按钮--在新窗口中往下看 键盘 列表,看如果有
美式键盘,选中---删除。
以上过程完成后,关闭窗口,打开出问题的软件,输入汉字,应当就会正常。
参考技术B 编码时只能输入英文,汉字的话得用""括起来或者有注释符号注释,其实就是提醒你在这里输入汉字是不对的!原来用过一个什么也不提示的,编译老是有错误,就是不知道为什么,费了老大劲才弄明白!追问

我是在注释里面写不了汉字

追答

你用微软拼音试试,也许是输入法的问题,好像vs2012和win8在这里有bug!

追问

用过了,还是不行o(╯□╰)o

追答

重启,新建一个试试,再不行就没办法了,我刚试了我的,没什么问题啊!

追问

我重装一遍试试吧,你是在哪下的呀

本回答被提问者采纳
参考技术C 有可能是环境不支持汉字的输入吧,没有汉字解码器,不认识你输入的东西,所以显示问号吧追问

有可能,复制过来的可以显示,输入的就不行,应该怎样解决呢

为啥在使用“评论选择”评论多行选择时,Visual Studio 会诉诸单行评论?

【中文标题】为啥在使用“评论选择”评论多行选择时,Visual Studio 会诉诸单行评论?【英文标题】:Why does Visual Studio resort to single-line comments when commenting a multi-line selection with "Comment Selection"?为什么在使用“评论选择”评论多行选择时,Visual Studio 会诉诸单行评论? 【发布时间】:2015-10-29 19:41:35 【问题描述】:

我一直想知道的关于 Visual Studio 中的 注释选择 选项的一些小问题(Ctrl + KCtrl + C)。

当我评论这个方法的实现时使用单行评论格式。

private void Foo()

    //Bar b = new Bar();

当我在这里注释构造函数的参数时(部分行)使用分隔注释格式。

private void Foo(Qux q)

    Bar b = new Bar(/*q*/);

注释掉整个方法会导致:

//private void Foo()
//
//    Bar b = new Bar();
//

我觉得分隔注释格式在最后一种情况下更合适,因为规范说:

单行 cmets 延伸到源代码行的末尾。 分隔的 cmets 可以跨越多行。

有谁知道为什么在 Visual Studio 中评论 多行选择 时选择此格式作为默认格式?

【问题讨论】:

不确定文档是否对此给出了任何解释,但我猜这是为了让以后更容易取消注释部分选择。例如,如果您决定只取消注释方法声明和大括号,但希望将单独的语句注释掉。 我同意@BoltClock。注释后,您可以取消注释每一行而不影响其他行。它更容易。 此外,作为一般(非特定语言)规则,这更好,b/c 某些语言(如 Scss)仍然处理多行注释中的代码,您可能想要实际注释(例如文档 cmets),但您在注释 out 代码时可能想要。 【参考方案1】:

多行注释在 C# 中已更改,但未在 VS IDE 中实现,您可能可以创建自己的方式或找到扩展。 C# 现在将 /** */ 用于多行 cmets,并且还有各种关于其工作方式的内置规则。 看这个链接:https://msdn.microsoft.com/en-us/library/5fz4y783.aspx

【讨论】:

【参考方案2】:

这样做会有一些问题:


如果任何代码行中有一个*/,它就不起作用:

private void Foo(Qux q)

    //we use "*/image/*" flag here to find only images
    Bar b = new Bar("Some wildcard: */image/*");

评论:

/*
private void Foo(Qux q)

    //we use "*/image/*" flag here to find only images
    Bar b = new Bar("Some wildcard: */image/*");

*/

如果您在已经包含分隔注释的部分上点击“注释选择”,那么尝试用分隔注释包装代码将不起作用:

/*
private void Foo(Qux q)

    /* Some multiline 
     * comment
     */
    Bar b = new Bar();

*/

但是很好,我们可以通过插入多个分隔的 cmets 和单行 cmets 的组合来解决这个问题:

/*
private void Foo(Qux q)

    /* Some multiline 
     * comment
*/
//   */
/*
    Bar b = new Bar();

*/

有点难看,但它有效。如果您遇到该注释代码,您是否能够立即识别代码部分和注释部分是什么?此外,如果你点击“取消注释选择”命令,你会知道你会得到什么吗?

更进一步,想象一下,如果你评论这条评论,它会变得更加丑陋和难以阅读。


如果您在注释掉的文本中有*/,则解决方法/逃避 cmets 会变得更糟(在我看来):

private void Foo(Qux q)

    //we use "*/image/*" flag here to find only images
    Bar b = new Bar("Some wildcard: */image/*");

转换为:

/*
private void Foo(Qux q)

    //we use "**//*/image/*" flag here to find only images
    Bar b = new Bar("Some wildcard: **//*/image/*");

/*

将上面令人困惑的注释代码与现有的单行实现进行比较:

//private void Foo(Qux q)
//
//    /* Some multiline 
//     * comment
//     */
//    Bar b = new Bar();
//

//private void Foo(Qux q)
//
//    //we use "*/image/*" flag here to find only images
//    Bar b = new Bar("Some wildcard: */image/*");
//

这样做的好处是代码几乎是 1:1 与之前的样子完全相同,只是以 // 字符为前缀。如果您进一步评论或取消评论,它仍然完全可读并且仍然完全可以预测它会是什么样子。嵌套单行 cmets 或嵌套分隔 cmets 没有任何问题。


也许最后,从 IDE 的角度来看,实现起来真的很简单:“注释选择”意味着在每一行添加一个 // 前缀,“取消注释选择”意味着删除前面的 @987654332 @。无需处理解析代码/cmets,或解析不正确的语法代码/cmets。

【讨论】:

【参考方案3】:

据我描述,多行注释是 C 语言的产物,大多数 C# 程序员更喜欢使用 // 样式的注释。

如果在嵌套结构中多次使用多行样式/**/ 会变得混乱,因此比单行对应物更容易出错。 See this question 了解更多信息。

【讨论】:

以上是关于为啥用visual studio2012编程时输入汉字显示为问号的主要内容,如果未能解决你的问题,请参考以下文章

visual studio2012怎么安装

为啥 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效?

visual studio2012中 c语言编译出来的程序怎么暂停啊

为啥 Visual Studio 2012 找不到我的测试?

为啥使用 Visual Studio 而不是 GCC 编译时没有错误?

为啥visual studio2012在新建c++项目的时候会出现这个对话框?