Unicode字符串中的泰语角色问题
我有一个字符串,泰语中有几个字符.该字符串使用Unicode字符.但是我看不到IDE中的泰语字符,甚至在文本文件中写下字符串.如果我想正确查看泰语字符,我必须编写以下代码 var text = "M_M-150 150CC. เดี่ยว (2 For 18 Save 2)"; var ascii = Encoding.Default.GetBytes(text); text = Encoding.UTF8.GetString(ascii); 应用上述逻辑后,我可以与泰语字符正确看到字符串.这是输出 // notice the thai character เดี่ยว in the string M_M-150 150CC. เดี่ยว (2 For 18 Save 2) 我不确定为什么我需要在上述逻辑上应用以查看泰语字符,即使字符串是Unicode? 在这种情况下,到底要做什么encoding.default
16 2024-04-26
编程技术问答社区
asp.net中的全球化和本地化
我们需要开发ASP.NET 3.5 Web应用程序,该应用程序应支持日语和英语.如果用户从日本访问,则我们的应用程序应以日语打开;否则,我们的应用程序应英语打开.我们如何达到这一要求?示例代码非常欢迎. 谢谢. 解决方案 您的问题太广泛,但您期望代码示例.这是一个建筑决定,首先使自己熟悉这是一些相关文章,您会发现有用: 我需要什么知道要全球化ASP.NET应用程序吗? 如何在ASP.NET中获得多元化支持 其他解决方案 只需在页面类中添加一个基本类,将此方法放入basepage类中,然后在每个aspx.cs页面中继承basepage类,以添加basepage类. protected override void InitializeCulture() { Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); Thread.CurrentThread.CurrentCult
22 2024-04-26
编程技术问答社区
数据网格视图不能显示正确的文化信息
我有一个相当标准的bindingsource/dataGridView组合. BindingSource具有十进制类型的属性,必须在DataGridView中显示为货币.对于测试,我想看看如果我使用使用€作为货币格式而不是£ 的文化信息,它的样子 我的问题是,尽管我通过编程方式更改当前线程的当前文化(我的应用程序只有一个线程),但我的datagridView仍然显示£. 设计师为我创建以下代码段: this.columnPriceValue = new Forms.DataGridViewTextBoxColumn(); this.columnPriceValue.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; this.columnPriceValue.DataPropertyName = "Value"; dataGridViewCellStyle2.Format = "C4"; ... 在我的主要形式的
8 2024-04-25
编程技术问答社区
ASP.NET核心中的全球化
我阅读了有关全球化ASP.NET核心应用程序的文章.所有这些都建议创建"资源"文件夹并创建子文件夹,并为每个控制器/View/ViewModel,为每种语言创建资源文件.是否有更好的方法来执行此操作,只是每个语言拥有一个资源文件?如果是,我需要在startup.cs文件中进行什么更改? 解决方案 每个语言只有一个资源文件,有更好的方法吗? 全球化借助ShareShareResource,您可以参考以下内容: SharedResource.cs,将其放在项目的根文件夹中,它不需要包含任何数据,只有类声明. 创建一个与.cs文件相同的资源文件,需要将其放入资源文件夹中. 对于使用共享Resource文件,您可以参考以下链接: asp.net核心核心本地化
24 2024-04-24
编程技术问答社区
如何处理全球化MVC应用中的小数输入值
目前试图返回.NET 4.8 MVC应用程序以支持全球化(需要同时支持英语和法语).到目前为止,一切都很好. 但是,问题是十进制输入.这是一个财务应用程序,因此我必须处理设置为type="number"的输入框很重要.严格来说,我知道该值15000,25不被视为一个数字,并且不会隐式转换为十进制(我在视图模型中使用的背景字段数据类型).考虑到这一点,我有一个自定义模型粘合剂: public class DecimalModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingCont
22 2024-04-24
编程技术问答社区
全局化运行时生成的程序集
背景 一个项目安装了一些包含所有元素来定义USERCORTROL的文件 - 一些用户源,用于设计器代码的CodeCompileUnit和RESX文件.在运行时,将这些文件汇编为一个程序集,并且类由我们的主要应用程序消费(仅在必要时更新程序集). . 问题 该项目必须全球化,并且作为该过程的一部分,需要提供这些文件的本地化.两个选项是允许在不同地区(在同一文件中或作为其他并排文件)中包含其他RESX文件,可以将其编译到主组件的卫星组件中,或者提供的副本每个支持语言的每个完整文件,为所支持的语言编辑适当的集合. 有人还有其他可能值得考虑的选择吗? 我提出的任何解决方案中的任何一个都可能固有哪些问题? 约束/免责声明 我知道该方案并不理想,并且可以在某些领域(例如从一开始)做出更好的选择,但是在项目的这一点上,它们无法更改.感谢您提供的任何建议,解决方案或潜在客户.谢谢. 解决方案 为每种文化创建一个单独的卫星组件.这有两个好处: 您可以一次构
20 2024-04-24
编程技术问答社区
显示相当于当前文化信息中的 "MMM d, yyyy"。
我已经仔细阅读了C#提供的标准DateTime格式,我似乎找不到与"短期日期"要求相匹配的标准格式化器:" 2013年5月4日".我知道我可以执行自定义格式字符串来实现目标: myDateTimeOffset.ToString("MMM d, yyyy"); 但是,此申请可能会用于其他国家.有没有办法使当前文化等同于特定格式字符串? myDateTimeOffset.ToString("MMM d, yyyy", CultureInfo.CurrentUICulture); 并适应了外国文化中同等的"短期"格式? 解决方案 我认为在您的特定要求中没有任何默认格式选项(D可能会接近).我已经在书签中概述了十多年,但我发现它仍然有用:无论如何,由于您的应用程序可能无法用于无限量的语言,我认为您的最佳选择是根据使用的实际语言(甚至需要)使用某种DateTime扩展方法和格式.
4 2024-04-23
编程技术问答社区
DateTime.Now日期格式和Windows设置
我在C#中编写了一个控制台应用程序,该应用程序使用DateTime.now.随着Windows区域设置为"英语(美国)",短期输出为m/d/yyyy.我的应用程序的实例是在机器上运行,其文化格式设置为"英语(加拿大)",而短期格式设置为dd/mm/yyyy.由于我希望通过不同的服务器在应用程序中的一致性,因此我将Windows区域设置中的短日期格式更改为M/D/Yyyy.但是,我的应用程序仍在输出dateTime.现在为dd/mm/yyyy.我的应用程序是否需要更改其他内容才能以我指定的格式输出? 我在各个地方这样做,但这里有一个例子: TimeZoneInfo customTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); DateTime thisTime = TimeZoneInfo.ConvertTime(DateTime.Now, customTimeZone); //Th
8 2024-04-23
编程技术问答社区
如何将我的Oracle会话的全球化设置为与.NET中的Windows相同?
例如,如果我可以做以下操作,那将是很棒的: private void SetSessionGlobalization(Oracle.DataAccess.Client.OracleConnection aConnection) { System.Globalization.CultureInfo lCultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture; aConnection.SetSessionInfo(lCultureInfo); } 但这是行不通的,因为SetSessionInfo将Oracleglobalization类作为参数,而不是Cultureinfo! 这也不起作用: private void SetSessionGlobalization(Oracle.DataAccess.Client.OracleConnection aConnection) {
28 2024-04-23
编程技术问答社区
迁移到生产环境时的日期时间问题
我的MVC应用程序中有几种表单,它们具有通过datePicker工具选择的日期值.当在本地调试但部署到云环境时,我的日期没有正确转换时,这很好.我有以下代码: string[] uploaddate = form.GetValues("uploaddate"); string[] expirydate = form.GetValues("expirydate"); 这将日期为31/08/2013等,从这里我将转换为DateTime,如下: Convert.ToDateTime(uploaddate[0]); Convert.ToDateTime(expirydate[0]); 当我部署到Azure服务器时,我会收到以下错误: 字符串未被认为是有效的日期时间. 我认为实例图像在我的应用程序以英国格式设计时具有我们的文化.我如何解决此问题,以便将信息保存到数据库中,无论用户的文化如何? 解决方案 我会改善日期选择器,以使其张贴的价值始终是yyyy-mm
8 2024-04-22
编程技术问答社区
格式化的DateTime支持的语言?
日期时间让您根据当前文化的格式.默认情况下支持哪些文化? 我想到的情况使用this.Date.Value.ToString("MMMM"),如果文化设置为英语,但如果文化在法语中,它将打印"一月",但将打印" Janvier".该格式文档可以在我想知道哪些语言得到了支持,如果不支持语言,我的选择是什么? 解决方案 您可以使用 CultureInfo.GetCultures CultureInfo.GetCultures CultureInfo.GetCultures/a>获得所有受支持的文化. CultureInfo[] cultures = CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures); string allTranslatedJanuaries = string.Join(Environment.NewLine, cultures.Sel
4 2024-04-22
编程技术问答社区
VkKeyScan对有重音和无重音的字母返回相同的代码,不含修饰语
背景: 我正在使用非管理函数sendInput模拟击键( 指定键盘scancode 指定字符unicode 指定虚拟密钥代码 所有工作,但是要能够模拟诸如Ctrl+P之类的快捷方式,我想使用虚拟密钥代码.我目前有字符对虚拟键代码的手动映射,但这不是一个好方法,因为它对用户的OS键盘布局不敏感.例如,在英语(英国)键盘上.字符可以映射到virtualKeyCode.oem_period,但是如果操作系统键盘布局为法语,则可以".是VirtualKeyCode.OEM_PERIOD + SHIFT. 使我的代码更强大,我想调用方法vkkeyscan( 问题: 声明: [DllImport("user32.dll", CharSet = CharSet.Unicode)] static extern short VkKeyScan(char ch); 用法: var vkKeyScanResult = PInvoke.VkKeyScan(charac
8 2024-04-22
编程技术问答社区
如何刷新PropertyGrid中的本地化属性
我的本​​地属性有问题,例如: public class LocalizedDisplayNameAttribute : DisplayNameAttribute { public LocalizedDisplayNameAttribute(string resourceId) : base(GetMessageFromResource(resourceId)) { } private static string GetMessageFromResource(string resourceId) { var propertyInfo = typeof(Lockit).GetProperty(resourceId, BindingFlags.Static | BindingFlags.Public); return (string)propertyInfo.GetValue(null, null);
8 2024-04-22
编程技术问答社区
改变System.Globalization.NumberFormatInfo中的货币符号位置
我使用New CultureInfo(" FR-FR")创建了一个CultureInfo对象.现在,我有一个我想称为.tostring的号码(" C",Frenchultureinfo).由此产生的字符串将数字放置在数字之后.为什么? CultureInfo french = new CultureInfo("fr-FR"); double value = 1234.56; string output = value.ToString("C", french);//output = "1 234,56 €" 从我所看到的,欧元需要在左边,我的业务需求要求它在左边.但是,无法编程设置此值. 关于如何轻松设置此值的任何想法?我已经开始采用美国文化对象,并将所有内容从法国文化中复制到它,因为我们仍然希望所有其他法国环境,除了欧元以正确的价值.但是这种方法非常耗时且令人沮丧. 谢谢! 解决方案 克隆原件,然后对其进行修改: CultureInfo french
16 2024-04-21
编程技术问答社区
在现有的ASP.NET WebForms网站中添加带有根路径的第二语言支持
我从一个很小的ASP.NET WebForms项目继承了,我的客户想向其添加第二种语言. 对于每个" somepage.aspx",我都想支持它的"第二语言路径"版本,例如" fr/somepage.aspx".我想使用普通全球化(两种语言中的当前文化 +资源文件)来处理此问题,并避免重复每个页面.我必须保持原始路径有效,因此我暂时排除了ASP.NET MVC(因为缺乏知道我是否可以继续支持" .aspx"路径). 这是可能的吗? 解决方案 URL路由在ASP.NET中可用. 您可以创建两条路线,第一个是捕获您语言的路线: {language}/{page} 第二个路线只是 {page} 在MVC中,我们可以创建路由约束,以实施该语言为特定值(因此,例如EN,EN-US等),如果可以在常规的ASP.NET WebForms路由中完成相同的情况,我就不是积极的. 这是两篇文章,描述了WebForms(non-MVC)中的路由主题
6 2024-04-21
编程技术问答社区
本地化。扩展ASP.NET Resx资源提供者
对于我的网站,我有一个用于本地化的自定义资源提供商(本地化字符串存储在数据库中).它可以正常工作,但是我希望它可以与默认的RESX资源提供商一起使用:在RESX资源中查找本地化字符串,如果不存在,请将其从数据库中提取. ,但看来我将IIS全球化设置更改为使用自己的资源提供商工厂,那么默认的RESX资源提供商工厂就会被忽略. 我想解决方案是扩展自己的资源提供商,但是我找不到如何从资源提供商内部参考RESX资源. 谢谢. 解决方案 编辑 我的答案是错误的,正如评论中指出的那样.您可以通过使用以下反射来获得 resxRESXRESCORCEOURCERCERCEREFIDERFACTORY . IResourceProvider resxProvider; string typeName = "System.Web.Compilation.ResXResourceProviderFactory, System.Web, Version=2.0.0.0, C
8 2024-04-21
编程技术问答社区
为MVC生成Resx文件
我们将RESX文件用于全球化,以及我们的CS员工可以配置的内容(例如Tab名称,可以通过产品不同)的数据库查找,因此在Design Time中不知道. 我创建了一个自定义工具,该工具读取RESX文件,并智能地将密钥/值对插入关系数据库(匹配值,因此我们没有重复). 这对我们的业务有很大的帮助 - 我们不必发送每个resx进行翻译(并为共享单词的重复翻译付费),并且我们具有所有翻译的"黄金标准"(在数据库中). 我创建的工具还读取数据库,拾取键/值对和每个值的翻译,并为每个resx文件(以及每种语言的文本文件的翻译)创建文本文件,并自动运行运行resgen.exe.exe. ,一种使用Visual Studio发货的命令行工具,用于从生成的文本文件中编译RESX文件. 我没有任何源控制集成,因此我们必须在使用该工具时手动查看RESX文件并手动检查生成的文件,但这不是一个大问题. 我的问题是,对于我们的新MVC项目,此方法正在失败:MVC项目要求使用" public
8 2024-04-20
编程技术问答社区
将WinForms应用程序的翻译外部化?
我正在研究将部署在许多不同国家的应用程序,这当然意味着不同的语言. 问题是我不会自己翻译,也不会翻译其他开发人员.其中一位用户将翻译它,他将无法访问Visual Studio. 问题是,该怎么做?是否有一个工具可以编辑RESX文件并在应用程序上下文中查看文本?此外,是否可以在已经编译的应用程序中添加翻译文件? 解决方案 作为思想的食物,请尝试以下链接: 是适用于国际化的RESX文件 商业工具 /li> 祝你好运 其他解决方案 看看其他解决方案 如果它是用户可自定义的,那么资源文件可能不是最佳选择,而是具有默认方案和用户可编辑的XML文件. 如果问题是翻译人员,则可以使用Amazons Mechanical Turk Service之类的东西为您完成翻译. https://www.mturk.com/mturk/mturk/mturk/welcome 看起来Google也有类似的产品:
8 2024-04-20
编程技术问答社区
.NET全球化与卫星DLL's
我正在努力本地化我在C#中写的应用程序. 一切似乎都很好地工作了,使用卫星资源组件来翻译每个表格的字符串(根据本教程: http://msdn.microsoft.com/en-us/library/y99d1cd3%28vs.71%29.aspx ) 但是,该应用程序最终将需要许多语言,这意味着我的工作目录中的目录(即/zh-tw,/zh-cn,/fr-fr,/ja-jp等)中的目录负载.我想通过在A/语言或/资源子目录中找到所有这些(换句话说,设置"卫星组件的基本路径")来清理一些.但是我已经搜索了高和低的,并且无法找到自定义这些卫星组件的位置的任何方法. 任何提示都将不胜感激! 解决方案 找到了一个更容易的解决方案 - 在app.config中:
8 2024-04-19
编程技术问答社区