A. php 中文与16进制转换问题
以 \u 开头,后跟4个十六进制数(即范围在 0-9 A-F的字符),是unicode编码格式的字符。
在PHP中,如果想要进行两者之间的转换,可以使用以下的函数:
<meta charset="UTF-8"/>
<?php
// 转换编码,将可以浏览的utf-8字符串转换成Unicode编码
function unicode_encode($uStr)
{
$uStr = iconv('UTF-8', 'UCS-2', $uStr);
$len = strlen($uStr);
$str = '';
//for ($i = 0; $i < $len – 1; $i = $i + 2){
for ($i = 0; $i < $len - 1; $i = $i + 2) {
$c = $uStr[$i];
$c2 = $uStr[$i + 1];
if (ord($c) > 0) { // 两个字节的文字
$str .= '\u' . base_convert(ord($c), 10, 16) . base_convert(ord($c2), 10, 16);
} else {
$str .= $c2;
}
}
return $str;
}
// 转换编码,将Unicode编码转换成可以浏览的utf-8字符串
function unicode_decode($uStr)
{
$pattern = '/([\w]+)|(\\\u([\w]{4}))/i';
preg_match_all($pattern, $uStr, $matches);
if (!empty($matches)) {
$uStr = '';
for ($j = 0; $j < count($matches[0]); $j++) {
$str = $matches[0][$j];
if (strpos($str, '\\u') === 0) {
$code = base_convert(substr($str, 2, 2), 16, 10);
$code2 = base_convert(substr($str, 4), 16, 10);
$c = chr($code) . chr($code2);
$c = iconv('UCS-2', 'UTF-8', $c);
$uStr .= $c;
} else {
$uStr .= $str;
}
}
}
return $uStr;
}
$uStr = '大家好';
echo '原始字符: ', $uStr , ' Undicode编码:', unicode_encode($uStr);
?>
B. 主要是这样的,我想用php读取txt文件里每一行的汉字 并实现16进制转码
题义是要将gbk编码先转换成utf8编码然后在转成urlecode。
写代码如下
<?php
$a=file('old.txt'); //旧文本
$f=fopen('new.txt','wt'); //新生成文本
foreach($a as $k=>$l){
$l=urlencode(iconv('gbk','utf-8',trim($l))); //cp936即gbk的早期版本
echo $l.'<br/>';
fwrite($f,$l."\n");
}
fclose($f);
=============
原文件内容:
汉字汉字
数字数字
网络网络
输出文件内容:
%E6%B1%89%E5%AD%97%E6%B1%89%E5%AD%97
%E6%95%B0%E5%AD%97%E6%95%B0%E5%AD%97
%E7%99%BE%E5%BA%A6%E7%99%BE%E5%BA%A6
C. PHP把单个字母转为十六进制的函数是什么
PHP convert string to hex and hex to string
<?php
function strToHex($string){
$hex = '';
for ($i=0; $i<strlen($string); $i++){
$ord = ord($string[$i]);
$hexCode = dechex($ord);
$hex .= substr('0'.$hexCode, -2);
}
return strToUpper($hex);
}
function hexToStr($hex){
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2){
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
// Tests
header('Content-Type: text/plain');
function test($expected, $actual, $success) {
if($expected !== $actual) {
echo "Expected: '$expected'\n";
echo "Actual: '$actual'\n";
echo "\n";
$success = false;
}
return $success;
}
$success = true;
$success = test('00', strToHex(hexToStr('00')), $success);
$success = test('FF', strToHex(hexToStr('FF')), $success);
$success = test('000102FF', strToHex(hexToStr('000102FF')), $success);
$success = test('↕↑↔§P↔§P ♫§T↕§↕', hexToStr(strToHex('↕↑↔§P↔§P ♫§T↕§↕')), $success);
echo $success ? "Success" : "\nFailed";
D. PHP里,16进制格式字符串,转换成具体值的方法
还有 hexdec 这个函数number hexdec ( string $hex_string )
Example #1 hexdec() 例子
<?php
var_mp(hexdec("See"));
var_mp(hexdec("ee"));
// both print "int(238)"
var_mp(hexdec("that")); // print "int(10)"
var_mp(hexdec("a0")); // print "int(160)"
?>
E. PHP十六进制,十进制,八进制,二进制怎么转回原本的文字
你是在说进制间的转换吗?
base_convert() 函数貌似能帮助你
比如
$a = 120;// 十进制数
// 将此十进制数转换为 2进制
echo base_convert($a , 10 , 2); // 结果是 1111000
// 在吧 1111000 转回 120 十进制 也就二进制赚十进制
echo base_convert(1111000 , 2 , 10);
至于其他进制间转换 就跟上面的操作一样了。
F. 在PHP中如何把地址栏中16进制转换成中文,要PHP中代码语句
echo urldecode($_GET['stra']);
G. php 怎么将utf-8格式的汉字转换成16进制
//字符串转换成16进制
function str2hex($str){
$hex = ''
for($i=0,$length=mb_strlen($str); $i<$length; $i++){
$hex .= dechex(ord($str{$i}));
}
return $hex;
}
//16进制转换成字符串
function hex2str($hex){
$str = ''
$arr = str_split($hex, 2);
foreach($arr as $bit){
$str .= chr(hexdec($bit));
}
return $str;
}
function test(){
//utf8字符测试
$str = '中文'
echo mb_strlen($str);
echo '<br>'
$hex = str2hex($str);
echo $hex;
echo '<br>'
$dec = hex2str($hex);
echo $dec;
echo "<br>";
echo "<hr>";
//gbk测试
$gbkstr = mb_convert_encoding($str,'GBK','UTF-8');
echo mb_strlen($gbkstr);
echo '<br>'
$hex = str2hex($gbkstr);
echo $hex;
echo '<br>'
$dec = mb_convert_encoding(hex2str($hex), 'UTF-8', 'GBK');
echo $dec;
echo "<br>";
}
H. PHP中的中文,转换为16进制的方法
echo RawUrlEncode( $row_xx['xx']);
================
这样即可。上面这个用raw的更加标准
I. PHP中有没有将汉字直接转换成16进制的函数
<?$str="汉字";$ch16=str_replace("%","",urlencode($str));echo $ch16;?>输出:BABAD7D6
J. 汉字怎样转换十六进制php
//汉字进制转换
//$string 传入的汉字或其它字符
//$tobase 要转换的进制 范围 2~36 之间任意取值
//$back 返回形式,0 转换成进制代码 ; 1 将进制转换成汉字
function ASCII($String,$tobase,$back){
if( $tobase > 1 && $tobase < 37 ){
if($back == 0){
return preg_replace('/(.)/es',"str_pad(base_convert(ord('\\1'),10,$tobase),8,'0',STR_PAD_LEFT)",$String);
}else{
return preg_replace('/(\w{8})/e',"chr(base_convert('\\1',$tobase,10))",$String);
}
}else{
return false;
}
}
//范例
$str = '我爱你';
$en = ASCII($str,2,0); // 转换成2进制: 00
echo ASCII($en,2,1); // 转换成汉字:我爱你
$en = ASCII($str,8,0); // 转换成8进制: 40
echo ASCII($en,8,1); // 转换成汉字:我爱你
$en = ASCII($str,10,0); // 转换成10进制: 60
echo ASCII($en,10,1); // 转换成汉字:我爱你
$en = ASCII($str,10,0); // 转换成10进制: 60
echo ASCII($en,10,1); // 转换成汉字:我爱你
$en = ASCII($str,16,0); // 转换成10进制: a0
echo ASCII($en,16,1); // 转换成汉字:我爱你