我发誓这不重复,因为我没有从这些问题和答案中找到答案。
我正在开展一个项目,我应该知道孟加拉语字符的unicode值。一个bengali字符' ক'具有unicode值' 0x0995 '。
我在网上找到了很多功能,但不幸的是他们没有使用孟加拉语。可能是因为孟加拉语是多字节语言。
php(用户定义或内置)中是否有任何功能,如
somefunction(ক);
,它将提供 0995 的值。
[请在您建议我之前测试您的代码字符ক是否提供十六进制0995或等效字段,]
谢谢。
答案 0 :(得分:1)
从PHP 7开始,您可以使用来自intl扩展名的内置类IntlChar:
1.void main(){
2.double *a, *b, *c;
3.int i,j,k, ok, n=100;
4.int nPadded = ( n%8 == 0 ? n : n + (8-n%8) );
5.ok = posix_memalign((void**)&a, 64, n*nPadded*sizeof(double));
6.ok = posix_memalign((void**)&b, 64, n*nPadded*sizeof(double));
7.ok = posix_memalign((void**)&c, 64, n*nPadded*sizeof(double));
8.for(i=0; i<n; i++)
9.{
10. a[i] = (int) rand();
11. b[i] = (int) rand();
12. c[i] = 0.0;
13.}
14.#pragma offload target(mic) in(a,b:length(n*nPadded)) inout(c:length(n*nPadded))
15.#pragma omp parallel for
16.for( i = 0; i < n; i++ )
17. for( k = 0; k < n; k++ )
18. #pragma vector aligned
19. #pragma ivdep
20. for( j = 0; j < n; j++ ){
21. c[i*nPadded+j] = c[i*nPadded+j] + a[i*nPadded+k]*b[k*nPadded+j]
22.}
只需添加一个dechex来从十进制转换为hexa,或者对于自定义格式,添加(s)printf(例如:var_dump(IntlChar::chr('ক')); # => int(2453)
)。
答案 1 :(得分:1)
对于PHP&lt; 7,此版本的uniord
正确处理基本多语言平面以外的字符:
function uniord($s) {
return unpack('V', iconv('UTF-8', 'UCS-4LE', $s))[1];
}
答案 2 :(得分:0)
function uniord($u) {
$k = mb_convert_encoding($u, 'UCS-2LE', 'UTF-8');
$k1 = ord(substr($k, 0, 1));
$k2 = ord(substr($k, 1, 1));
return $k2 * 256 + $k1;
}
echo uniord('ক');