65.9K
CodeProject 正在变化。 阅读更多。
Home

在控制台中读取带土耳其语字体的土耳其语 RSS Feed

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (4投票s)

2013年8月12日

CPOL

4分钟阅读

viewsIcon

23771

downloadIcon

172

本文提供了一个可用的软件工具来读取 RSS Feed,该工具特别设计用于在控制台窗口中读取和显示 Unicode 字符。

介绍 

我想在没有图片和花哨标识的控制台中阅读土耳其新闻。只有文本。我找了一下,没有找到能做到的工具。本项目汇集了项目不同部分的可免费获取的代码片段。如果您下载了二进制发行版,请为可执行文件MyCSrss.exe创建快捷方式链接,并将字体更改为 LUCIDA CONSOLE 以查看 Unicode 字符。

幕后工作

一个令人惊讶的挑战实际上是显示土耳其语 Unicode 字体。解决方案似乎是使用 kernel32.dll API [1]。我将一组函数移到 Turkish.cs 文件中,但只需要一个函数

只要控制台的字体属性设置为 TrueType 字体(如 Lucida Console 字体),此函数就可以在控制台窗口中显示 Unicode 字符。我根据 ISO 8859-9 到 Unicode 文档[2],将土耳其语中所有不在常规 ASCII 中的特殊字符都添加到了 Turkish.cs 中。

小写字母

大写字母

c_with_cedilla

C_with_cedilla

g_with_breve

G_with_breve

i_without_dot

I_with_dot

o_with_diaeresis

O_with_diaeresis

s_with_cedilla

S_with_cedilla

u_with_diaeresis

U_with_diaeresis

通过右键单击控制台窗口的左上角,选择“属性”,然后选择“字体”选项卡,可以更改控制台的字体属性:

只要是固定宽度的字体 [3],就可以将更多字体添加到控制台中。但 Lucida 字体足以完美显示所有土耳其语字母。

创建上述代码的是

读取 RSS Feed

Microsoft 的 System.Net[4] 和 System.Xml.Linq[5] 是易于使用的库,分别用于读取 RSS XML 页面和解析。

我在 RSS.cs 文件中的 RSS 类中封装了相关的静态函数。RSS 类有一个公共方法

其中 rss_sites 是一个字符串数组,代表 RSS Feed 的 URL 地址。需要注意的是,在使用 HttpWebRequest 对象时,将其 Proxy 设置为 null 可以使其速度更快[6]

有时 RSS Feed 中的“description”元素充斥着我不感兴趣的其他 XML 元素。为了去除这些,使用了 StripTagsCharArray[7] 函数。

整合

我不喜欢系统自动定位控制台窗口的方式。我通过右键单击控制台窗口的左上角,选择属性,然后选择“布局”,根据自己的喜好调整了设置。

运行该应用程序会返回一个来自土耳其报纸的土耳其经济新闻列表[8]。这使控制台窗口不堪重负,所以我使用 RSS.cs 中的常量 MAX_NEWS 将输出限制为 10 条新闻。如果按足够多的回车键,您就能看到 CNN 世界新闻[9]

我试图让 program.cs 尽可能简单:

其结果正是我在开始工作之前希望找到的。

 

当我在一个干净的环境中尝试测试 exe 的发布版本时,用户手动更改控制台属性的麻烦很快就显现出来了。如何自动更改控制台字体?这个问题得到了提出,并进行了一项有价值的尝试来使用未记录的 kernel32 调用[11] 来回答。因此,我将有趣的功能原型 incorporated 到此项目中,但最终没有使用它们,因为它们并没有真正达到我想要的效果。还可以通过注册表更改控制台字体,但我不太喜欢这个解决方案。

之前我曾尝试使用快捷方式链接并通过环境变量 %CD%[10] 从那里更改字体,但快捷方式链接的工作目录属性无法接受它。我尝试过通过脚本创建[12]快捷方式链接,但 API 似乎不支持更改字体。这就是为什么我无法在此软件包中包含快捷方式链接的原因。如果您希望保留控制台中的 Lucida 字体设置,请创建一个快捷方式链接并在其属性中将字体更改为 Lucida。然后,每次双击快捷方式时,您都会看到土耳其语字体,而不是主 MyCSrss.exe。

参考文献 

[1]: http://blogs.msdn.com/b/michkap/archive/2010/04/07/9989346.aspx

2013 年 8 月 9 日

[2]: ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/8859-9.TXT

2013 年 8 月 9 日

[3]: http://www.howtogeek.com/howto/windows-vista/stupid-geek-tricks-enable-more-fonts-for-the-windows-command-prompt/

2013 年 8 月 10 日

[4]: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx

2013 年 8 月 10 日

[5]: http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx

2013 年 8 月 10 日

[6]: http://stackoverflow.com/questions/1119347/how-to-perform-a-fast-web-request-in-c-sharp

2013 年 8 月 10 日

[7]: http://www.dotnetperls.com/remove-html-tags

2013 年 8 月 9 日

[8]: http://rss.hurriyet.com.tr/rss.aspx?sectionId=4

2013 年 8 月 10 日

[9]: http://rss.cnn.com/rss/cnn_world.rss

2013 年 8 月 10 日

[10]: http://libertyboy.free.fr/computing/reference/envariables/

2013 年 8 月 10 日

[11]: http://blogs.microsoft.co.il/blogs/pavely/archive/2009/07/23/changing-console-fonts.aspx

2013 年 8 月 10 日

[12]: http://support.microsoft.com/kb/244677

© . All rights reserved.