文档库 最新最全的文档下载
当前位置:文档库 › arabic

arabic

阿拉伯语字母表

阿拉伯语属阿非罗一亚细亚语系闪米特语族,是世界主要语言之一,是西亚和北非22个国家和地区的官方语言,使用人口约2亿。它是联合国6种工作语言之一,是全世界穆斯林通用的语言。阿语方言众多,现代标准阿拉伯语采用以《古兰经》为代表的典范的文学语言,书面语与口语不尽相同,与大马士革方言接近。

阿拉伯语有28个字母,都是辅音。元音没有字母(其实字母?和?表示i和u,字母y与i的符号不同,u与w同用一个符号?),需要标记时采用专门的符号,如在《古兰经》、初级课本、辞书中使用,正式书报刊物中一般不使用。所有以阿拉伯字母为基础的文字都如此。

阿拉伯语字母表,第一列是写法,第二列是拉丁转写,第三列是字母的阿语名称读音。

有的朋友问:“阿拉伯语发音简单吗?”就音素而言,阿拉伯语有一半以上辅音音素(17个)是汉语普通话没有的,尤其是顶音、喉音,独具特色;就发音规则而言,阿拉伯语是一个字母对应唯一的音素,比人们熟悉的主要印欧语简单得多。

阿语大多数字母在书写时连写,因而在词首、词中、词末的写法是不同的。阿拉伯语的书写行款是从右到左横书,书本样式与中国以前的一样——是从右往左翻的。阿语图书、刊物都是这样印刷装订。

Windows XP自带阿拉伯语输入法,但是没有安装在输入法选项中。需要安装时,打开“控制面板”,双击“区域和语言选项”,选择“语言”选项卡,勾选“为复杂文字和从右到左的语言安装文件(包括泰文)”,然后点击“详细信息”进入“文字服务与输入语言”对话框,点击“添加”按钮,“输入语言”选择阿拉伯语,“键盘布局/输入法”选择一种阿拉伯语输入法(键盘布局),建议选择“沙特阿拉伯”,单击“确定”。下一步,在"文字服务与输入语言"对话框中选择“高级”选项卡,勾选“将高级文字服务支持应用于所有程序”,单击“应用”,重启计算机后,此项设置生效。安装阿拉伯语输入法以后,语言栏的输入法里显示“AR”。选择它,就可以按照阿文键盘(有的字符需要上档键)

输入了。

阿拉伯语键盘表的一种具体布局因键盘种类和国家而不同。

阿拉伯字母使用非常广泛。除了阿拉伯语,以阿拉伯字母为基础的文字有波斯文、乌尔都文、维吾尔文、哈萨克文、柯尔克孜文等,信德语、旁遮普语等在巴基斯坦使用乌尔都文书写。土耳其革命前土耳其文使用的也是阿拉伯字母。中亚很多语言原来使用阿拉伯字母,1921-1932年苏联将使用阿拉伯字母的语言改为拉丁字母,1936-1940年又全部改为斯拉夫字母。

字母

A l p h a b e t

Cl i ck t o He a r

P h o n e t i c蛤哈吉木萨它巴艾里副

阿拉伯语字母表https://www.wendangku.net/doc/211462966.html,,开放的网络天书!Image:Arabic alphabet.png

阿拉伯语字母表为阿拉伯语的书写形式,类似于希伯来文。这表明在很多书籍和杂志中,短元音并不被标出,所以人们必须从文中推测出这些元音。出现这种现象的原因是闪族语更多的使用辅音和长元音来区分词义。

阿拉伯语是连续书写的,这不同于每个文字都单独书写的象形文字。这意味着阿拉伯字母的书写形式会受到语境的影响。

在阿拉伯字母中,双辅音使用一个tashdeed(类似于w的符号)表明。

可兰经是使用阿拉伯字母表书写的,世界上有几种语言使用阿拉伯字母,包括乌尔都语。请参看阿拉伯书法。

目录

[隐藏]

1 拼写

2 阿拉伯数字

3 连字符

3.1 请参考:

4 外部链接

[编辑]

拼写

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

旧体字母: ? ? [编辑]

阿拉伯数字

有两套数字体系:标准阿拉伯语数字和东阿拉伯语数字,使用于书写阿拉伯语的伊朗、巴基斯坦和印度。

标准阿拉伯语数字

? 0

? 1

? 2

? 3

? 4

? 5

? 6

? 7

? 8

? 9 [编辑]

连字符 ? (Sall-allahu alayhi wasallam ) - ? (Allah )

关于阿拉伯语排序次序

在这里,阿拉伯语排序次序是使用阿拉伯语代码页描述的,而不是使用 Unicode (Unicode :Unicode Consortium 开发的一种字符编码标准。该标准采用多(于一)个字节代表每一字符,实现了使用单个字符集代表世界上几乎所有书面语言。),因为大多数用户更熟悉前者。阿拉伯语排序次序表将阿拉伯语代码页的字符排列为一种排序次序。该排序次序控制了在使用阿拉伯语代码页的 Acc ess 数据库中如何对数据进行排序。

Ac c ess 使用来自 Unic ode 的值,对从右到左数据库进行排序,而不是像以前版本那样使用来自从右到左代码页中的值。打开或导入的使用希伯来语代码页和希伯来语排序次序的数据库,将被转换为 Unic ode 和常规排序次序 (常规排序次序:默认排序次序决定字符在整个数据库(比如表、查询和报表中)的排序次序。如果要在多语言版本的 Access 中使用数据库,就要定义常规排序次序。)。

阿拉伯语代码页的 256 个字符组织为几种类别,以确定如何对字符进行排序。

Kashida (kashidas :用来延长两个阿拉伯字符之间的连接符的特殊字符。用于改进对齐后文本的外观,它所采用的是在视觉上加长单词而不是增加单词之间的间距。也可作为连字符使用) 和双向 (双向:描述一种环境,从右向左和从左向右行为的属性同时在该环境下使用,如阿拉伯语和英语文本同时出现在一个句子中。)的控制字符 (控制字符:当继承的文本方向性不足以显示期望的结果时,插入从右向左和混合文本中以指定文本格式的字符。)(十六进制代码标记 9D 、9E 、DC 、FD 和 FE ): 排序忽略这些字符。

阿拉伯语音调符号 (音调符号:在字符上面、下面或旁边打印的标记,用来指示其如

东阿拉伯语数字

? 0

? 1

? 2

? 3

? 4

? 5

? 6

? 7

? 8

? 9

何发音。)(十六位代码标记F0 到F3、F5、F6、F8 和FA):

除非所比较的字符串完全相同,否则排序忽略阿拉伯语音调符号。在字符串完全相同的情况下,未标记的字符(没有音调符号)排在标记的字符(有音调符号)前面;具有较低代码标记值的音调符号排在其他音调符号前面。

常规控制字符(十六位代码标记00 到1F 和7F)、保留字符(十六位代码标记80、81、8D、8E、8F 和90)和标点符号:

这三个类别按类别次序排在字母数字字符前面(即常规控制字符排在第一位),并且在每个类型中按升序排列代码标记次序(例如,00 排在01 前面)。

阿拉伯语和从左到右(从左向右:是指键盘设置、文档视图、用户界面对象以及文本的显示方向。英语和大多数其他欧洲语言都是从左向右语言。)字母数字字符(显示在后面的阿拉伯语排序次序表中):

从左到右文本总是排在阿拉伯语文本前面。

从左到右文本排序不区分大小写。例如,虽然大写“A”在排序表中排在小写“a”前面,但Acc ess 平等对待这两个字符,不对任何一个字母提供排序优先权。

未标记的从左到右文本(没有音调符号)排在标记的从左到右文本之前。

下表列出了阿拉伯语代码页的字母文字字符,还有它们各自的十六位代码标记。从左上角开始,字符(Char)按排序次序排列。

最近在用VC++开发一个小工具,平时用惯了.NET,用起VC++最郁闷的就是字符串处理。当然最最让人难于琢磨的就是字符集,编码之间的转换。通过这几天的研究,终于明白了Unicode 和UTF-8之间编码的区别。Unicode是一个字符集,而UTF-8是Unicode的其中一种,Unicode 是定长的都为双字节,而UTF-8是可变的,对于汉字来说Unicode占有的字节比UTF-8占用的字节少1个字节。Unicode为双字节,而UTF-8中汉字占三个字节。

UTF-8编码字符理论上可以最多到6个字节长,然而16位BMP(Basic Multilingual Plane)字符最多只用到3字节长。下面看一下UTF-8编码表:

U-00000000 - U-0000007F: 0xxxxxxx

U-00000080 - U-000007FF: 110xxxxx 10xxxxxx

U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx

U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx xxx 的位置由字符编码数的二进制表示的位填入,越靠右的x 具有越少的特殊意义,只用最短的那个足够表达一个字符编码数的多字节串。注意在多字节串中, 第一个字节的开头"1"的数目就是整个串中字节的数目。而第一行中以0开头,是为了兼容ASCII编码,为一个字节,第二行就为双字节字符串,第三行为3字节,如汉字就属于这种,以此类推。(个人认为:其实我们可以简单的把前面的1的个数看成字节数)

为了要将Unicode转换为UTF-8,当然要知道他们的区别到底在什么地方。下面来看一下,在Unicode中的编码是怎样转换成UTF-8的,在UTF-8中,如果一个字符的字节小于0x80(128)则为ASCII字符,占一个字节,可以不用转换,因为UTF-8兼容ASCII编码。假如在Unicode中汉字“你”的编码为“u4F60”,把它转换为二进制为100111101100000,然后按照UTF-8的方法进行转换。可以将Unicode二进制从地位往高位取出二进制数字,每次取6位,如上述的二进制

就可以分别取出为如下所示的格式,前面按格式填补,不足8位用0填补。

unicode: 100111101100000 4F60

utf-8:11100100,10111101,10100000 E4BDA0

从上面就可以很直观的看出Unicode到UTF-8之间的转换,当然知道了UTF-8的格式后,就可以进行逆运算,就是按照格式把它在二进制中的相应位置上取出,然后在转换就是所得到的Unicode字符了(这个运算可以通过“位移”来完成)。

如上述的“你”的转换,由于其值大于0x800小于0x10000,因此可以判断为三字节存储,则最高位需要向右移“12”位再根据三字节格式的最高位为11100000(0xE0)求或(|)就可以得到最高位的值了。同理第二位则是右移“6”位,则还剩下最高位和第二位的二进制值,可以通过与111111(0x3F)求按位于(&)操作,再和11000000(0x80)求或(|)。第三位就不用移位了,只要直接取最后六位(与111111(ox3F)取&),在与11000000(0x80)求或(|)。OK了,转换成功!在VC++中的代码如下所示(Unicode到UTF-8的转换)。

1const wchar_t pUnicode = L"你";

2char utf8[3+1];

3 memset(utf8,0,4);

4 utf8[0] = 0xE0|(pUnicode>>12);

5 utf8[1] = 0x80|((pUnicode>>6)&0x3F);

6 utf8[2] = 0x80|(pUnicode&0x3F);

7 utf8[3] = "\0";

8//char[4]就是UTF-8的字符“你”了。

当然在UTF-8到Unicode的转换也是通过移位等来完成的,就是把UTF-8那些格式相应的位置的二进制数给揪出来。在上述例子中“你”为三个字节,因此要每个字节进行处理,有高位到低位进行处理。在UTF-8中“你”为11100100,10111101,10100000。从高位起即第一个字节11100100就是把其中的"0100"给取出来,这个很简单只要和11111(0x1F)取与(&),由三字节可以得知最到位肯定位于12位之前,因为每次取六位。所以还要将得到的结果左移12位,最高位也就这样完成了0100,000000,000000。而第二位则是要把“111101”给取出来,则只需将第二字节10111101和111111(0x3F)取与(&)。在将所得到的结果左移6位与最高字节所得的结果取或(|),第二位就这样完成了,得到的结果为0100,111101,000000。以此类推最后一位直接与111111(0x3F)取与(&),再与前面所得的结果取或(|)即可得到结果0100,111101,100000。OK,转换成功!在VC++中的代码如下所示(UTF-8到Unicode的转换)。

1//UTF-8格式的字符串

2const char* utf8 = "你";

3 wchar_t unicode;

4 unicode = (utf8[0] & 0x1F) << 12;

5 unicode |= (utf8[1] & 0x3F) << 6;

6 unicode |= (utf8[2] & 0x3F);

7//unicode is ok!

当然在编程过程中不可能只转换一个字符,这里需要注意的是字符的长度一定要算清楚,不然会带来...以上就是我这几天研究的结果,至于Unicode的转换为GB2312在MFC中Windows 有自带的API(WideCharToMultiByte)可以转换。这样也就能够将UTF-8格式转换为GB2312了。

相关文档