标签: turkish

JavaScript中的土耳其语案例转换

我想在我想要的语言环境中将字符串转换为JavaScript中的大小写.我认为标准功能喜欢toUpperCase()并且toLocaleUpperCase()不满足这种需求.toLocale函数不能正常运行.

例如,在我的系统上的Safari 4,Chrome 4 Beta,Firefox 3.5.x中,它会错误地转换带有土耳其语字符的字符串.该浏览器响应navigator.language为"en-US","tr","en-US"分别.但是Accept-Lang我无法在浏览器中找到用户的设置."tr"虽然我已经将每个浏览器土耳其语区域设置为首选,但只有Chrome会给我 我认为这些设置仅影响HTTP标头,但我们无法通过JavaScript访问这些设置.

Mozilla文档中,它说

字符串中的字符将转换为...,同时尊重当前区域设置.对于大多数语言,这将返回相同的...

我认为它对土耳其语有效,它没有区别它配置为en或tr.在土耳其应该转换"D?NÇ""dinç""DINÇ""d?nç"反之亦然.

有没有满足这种需求的JavaScript库?我认为它不仅应该在用户的语言环境中正确转换,而且还应该支持通过locale参数进行转换.因为开发人员无法访问用户配置的首选语言.

javascript turkish lowercase internationalization uppercase

28
推荐指数
2
解决办法
2万
查看次数

在什么JS引擎中,特别是对于LowerCase和toUpperCase的区域设置敏感?

在一些库的代码中(例如AngularJS,链接指向代码中的特定行),我可以看到使用自定义大小写转换函数而不是标准函数.假设在具有土耳其语语言环境的浏览器中,标准函数不能按预期工作,这是合理的:

console.log("SCRIPT".toLowerCase()); // "scr?pt"
console.log("script".toUpperCase()); // "SCR?PT"
Run Code Online (Sandbox Code Playgroud)

但这是真的还是一直如此?浏览器真的有这样的表现吗?如果是这样,他们中的哪一个呢?node.js怎么样?其他JS引擎?

这些toLocaleLowerCasetoLocaleUpperCase方法的存在意味着toLowerCase并且toUpperCase是区域不变的,不是吗?

对于什么样的浏览器,具体而言,它的角团队保留此检查的代码:if ('i' !== 'I'.toLowerCase())...


如果您的浏览器(设备)使用土耳其语或阿塞拜疆语区域设置,请运行此代码段并在发现问题确实存在时写信给我.

if ('i' !== 'I'.toLowerCase()) {
  document.write('Ooops! toLowerCase is locale-sensitive in your browser. ' +
    'Please write your user-agent in the comments to this question: ' +
    navigator.userAgent); 
} else {
  document.write('toLowerCase isn\'t locale-sensitive in your browser. ' +
    'Everything works as expected!');
}
Run Code Online (Sandbox Code Playgroud)
<html lang="tr">
Run Code Online (Sandbox Code Playgroud)

javascript unicode turkish internationalization angularjs

21
推荐指数
2
解决办法
2307
查看次数

从oracle varchar2显示字符串的十六进制值?

我们遇到的问题是文本以某种不同的方式编码,但保存在表格的单个列中.很长的故事.在MySQL上,我可以"从表中选择十六进制(str)",然后我看到字符串的字节与我设置它们完全相同.

在Oracle上,我有一个以土耳其字符İ开头的字符串,它是Unicode字符0x0130"带有上面点的拉丁文大写字母".这是我的Unicode 2.0版书的印刷版.在UTF-8中,该字符为0xc4b0.

我们需要支持非常旧的客户端应用程序.他们会在"windows-1254"中将此文本发送给我们.我们过去只是闭上眼睛,存放它,然后再将其交还.现在我们需要Unicode,或者被赋予Unicode.

所以我有:

SQL> select id, name from table where that thing;

ID     NAME
------ ------------------------
746    Ý
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为"İ"在Windows-1254中是0xdd而wondows-1252中的0xdd是"Ý".我的终端大概设置为通常的windows-1252.

但:

SQL> select id, rawtohex(name) from table where that thing;

ID     RAWTOHEX(NAME)
------ ------------------------
746    C39D
Run Code Online (Sandbox Code Playgroud)

似乎没有相当于MySQL中的hex(name)函数.但我必须遗漏一些东西.我在这里错过了什么?

我的java代码必须使用我提供的utf8并保存utf8副本和windows-1252副本.java代码给了我:

bytes (utf8):  c4 b0
bytes (1254):  dd
Run Code Online (Sandbox Code Playgroud)

然而,当我保存它时,客户端没有得到正确的字符.当我试图查看Oracle实际存储的内容时,我会看到上面看到的垃圾.我知道C39D的来源.有什么建议?

我们在所有应用程序中都内置了ojdbc14.jar,并且我们正在连接到一个数据库,该数据库表示它是"Oracle Database 11g企业版版本11.2.0.2.0 - 64位生产".

oracle unicode turkish utf-8 ojdbc

13
推荐指数
2
解决办法
8万
查看次数

正确处理土耳其大写和小写,需要修改/覆盖内置函数吗?

我正在使用多语言文本数据,其中包括使用西里尔字母和土耳其语的俄语.我基本上要的话在比较两个文件my_filecheck_file,如果在的话my_file可以发现check_file,把它们写在输出文件中保留约从两个输入文件这些词的元信息.

有些单词是小写的,而其他单词是大写的,所以我必须小写所有单词来比较它们.当我使用Python 3.6.5并且Python 3使用unicode作为默认值时,它会处理小写,然后为Cyrillic正确地大写单词.但是对于土耳其语,有些字母处理不正确.大写'?'应对应小写'i',大写'I'应对应小写'?',小写'i'应对应大写'?',如果我在控制台中键入以下内容则不是这种情况:

>>> print('?'.lower())
i?  # somewhat not rendered correctly, corresponds to unicode 'i\u0307'
>>> print('I'.lower())
i
>>> print('i'.upper())
I
Run Code Online (Sandbox Code Playgroud)

我正在做如下(简化的示例代码):

# python my_file check_file language

import sys

language = sys.argv[3]

# code to get the files as lists

my_file_list = [['?spanak', 'N'], ['?s?r', 'N'], ['ac?k', 'V']]
check_file_list = [['109', 'Ispanak', 'food_drink'], ['470', 'Is?r', 'action_words'], [409, 'Ac?k', 'action_words']] …
Run Code Online (Sandbox Code Playgroud)

python turkish built-in python-3.x cyrillic

11
推荐指数
1
解决办法
413
查看次数

如何在Java中覆盖货币符号?

我正在尝试用Java打印土耳其里拉(ISO 4217货币代码TRY)的价格.

当我做

Currency curr = Currency.getInstance("TRY");
Locale trLocale = new Locale("tr", "TR");
System.out.println(curr.getSymbol(trLocale));
Run Code Online (Sandbox Code Playgroud)

输出是:"YTL".

然而,土耳其里拉的货币符号最近已经从"YTL"变为"TL"(可以在土耳其里拉的维基百科页面上看到).格式化NumberFormat给出了类似的结果.

我真的不想写另一个Currency类,特别是当Java有一个内置的时候.

有没有办法将TRY的Java默认货币符号覆盖为"TL"?

java turkish currency internationalization

9
推荐指数
2
解决办法
4732
查看次数

如何在JavaScript中设置语言环境,例如toLocaleUpperCase()?

我想使用JavaScript toLocaleUpperCase()方法来确保大写字母对于土耳其语言正常工作.但是,我无法确定将土耳其语设置为用户的语言环境.

在现代浏览器中是否有办法在运行时设置区域设置,如果我确定该字符串是土耳其语?

(我在考虑土耳其语时遇到了这个问题,但实际上它可以是任何其他语言.)

javascript string turkish locale internationalization

9
推荐指数
1
解决办法
1万
查看次数

Qt正则表达式中的土耳其语字符

我想用正则表达式验证QLineEdit的文本.它应该允许从a到z的字符加上A到Z加上土耳其字符(ğüşöçİĞÜŞÖÇ)加上0到9之间的数字.我搜索了我的问题并找到了两个解决方案,但两个都没有为我工作.在一个解决方案中它说"在regexp中包含土耳其字符",在另一个解决方案中它说"使用土耳其字符的unicodes"

下面是两个reqular表达式

QRegExp exp = QRegExp("^[a-zA-Z0-9?ü?öç??Ü?ÖÇ]+$");

QRegExp exp = QRegExp("^[a-zA-Z0-9\u00E7\u011F\u0131\u015F\u00F6\u00FC\u00C7\u011E\u0130\u015E\u00D6\u00DC]+$");
Run Code Online (Sandbox Code Playgroud)

上面的reqular表达式都不能验证名称'İSMAİL'.此外,我试过一个文本只包含土耳其字符('ğüşöçİĞÜŞÖÇ')但它无法验证.当我从两个文本中删除"İ"字符时,可以对其进行验证.我想问题可能与'İ'字符有关.

我该如何解决这个问题?

注意:我们在项目中使用Qt 4.6.3.

regex turkish qt

9
推荐指数
1
解决办法
1万
查看次数

土耳其人字符上的Postgres上部功能不会返回预期结果

看起来postgres upper/lower函数不处理土耳其字符集中的选择字符.

select upper('Aa?'), lower('Aa?') from mytable;
Run Code Online (Sandbox Code Playgroud)

回报:

AA?, aa?
Run Code Online (Sandbox Code Playgroud)

代替 :

AAI, aai
Run Code Online (Sandbox Code Playgroud)

请注意,正常的英文字符转换正确,但不是土耳其语I(较低或较高)

Postgres版本: 9.2 32 bit

数据库编码(其中任何一个都是相同的结果): UTF-8, WIN1254, C

客户端编码:

 UTF-8, WIN1254, C
Run Code Online (Sandbox Code Playgroud)

OS: Windows 7 enterprise edition 64bit

SQL函数lowerupper在UTF-8编码数据库上为ı和İ返回以下相同的字节

\xc4b1    
\xc4b0   
Run Code Online (Sandbox Code Playgroud)

以及关于WIN1254(土耳其语)编码的数据库

\xfd      
\xdd     
Run Code Online (Sandbox Code Playgroud)

我希望我的调查是错误的,而且我错过了一些东西.

postgresql turkish character-encoding

8
推荐指数
1
解决办法
3527
查看次数

字符串搜索土耳其无点我

使用代码Ç?naralt? Café在文本中搜索文本时Ci

NSStringCompareOptions options =
    NSCaseInsensitiveSearch |
    NSDiacriticInsensitiveSearch |
    NSWidthInsensitiveSearch;
NSLocale *locale = [NSLocale localeWithLocaleIdentifier:@"tr"];
NSRange range = [haystack rangeOfString:needle 
                                options:options
                                  range:NSMakeRange(o, haystack.length)
                                 locale:locale];
Run Code Online (Sandbox Code Playgroud)

我得到了range.location平等NSNotFound.

这与初始Ç上的变音符号无关,因为我得到了相同的结果,搜索alti唯一奇怪的字符是ı.我也得到一个有效的匹配搜索Cafe包含变音符号(é).

苹果文档提到这种情况作为locale参数的注释,我我正在关注它们.虽然我猜我不是因为它不起作用.

如何搜索"i"以匹配"i"和"ı"?

turkish localization objective-c nsstring ios

7
推荐指数
1
解决办法
1144
查看次数

Android上的toUpperCase对于双参数和默认的希腊语和土耳其语语言环境是不正确的

当使用带有默认语言环境的toUpperCase()或更有趣的是两个参数Locale构造函数时,我遇到了希腊语和土耳其语的问题.

问题发生在Galaxy Tab S2 Android 5.0.2上(也在5.1.1上重现)
该问题可通过设置应用程序和MoreLocale 2重现

考虑到这个标题的价值:Τέλοςσυνεδρίας

这些调用工作正常.

title.toUpperCase(new Locale("el_GR")) 
title.toUpperCase(new Locale("el-GR"))
Run Code Online (Sandbox Code Playgroud)

两者都生成正确的结果.仔细观察,在T和P之后有刻度线.

ΤΈΛΟΣΣΥΝΕΔΡΊΑΣ

但是,我得到了默认语言环境和双参数Locale构造函数的不同结果.

这是我平板电脑上的默认语言环境:

Locale.getDefault() ==  el_GR
Run Code Online (Sandbox Code Playgroud)

哪个用于通用的toUpperCase()

public String toUpperCase() {
    return CaseMapper.toUpperCase(Locale.getDefault(), this, value, offset, count);
}
Run Code Online (Sandbox Code Playgroud)

当我调用它时,它返回不正确的结果.

title.toUpperCase()
Run Code Online (Sandbox Code Playgroud)

注意T和P上缺少的刻度线.

ΤΕΛΟΣΣΥΝΕΔΡΙΑΣ

如果我将两个参数构造函数用于新的语言环境,我会得到相同的结果:

title.toUpperCase(new Locale("el","GR"))
Run Code Online (Sandbox Code Playgroud)

ΤΕΛΟΣΣΥΝΕΔΡΙΑΣ

将这些行添加到应用程序启动可以解决问题,但却相当苛刻.

String language = Locale.getDefault().getLanguage();
String country = Locale.getDefault().getCountry();
Locale.setDefault(new Locale(language + "-" + country));
Run Code Online (Sandbox Code Playgroud)

我宁愿简单地遵循默认语言环境.

java turkish android internationalization

7
推荐指数
1
解决办法
394
查看次数