我正在从网络和nee中获取Windows-1256编码文本,将其转换为UTF-8. 我尝试使用mb_convert_encoding和iconv,但它们似乎不起作用. 它们似乎都无法处理Windows-126. 如何做? 编辑:有关错误的更多详细信息. 尝试 mb_convert_encoding($text,"utf-8", "windows-1256"); 我得到 消息:mb_convert_encoding()[function.mb-convert-insoding]:非法字符编码指定的 ,当我尝试 时 iconv("windows-1256", "utf-8", $text); 我没有错误,但它返回一个空字符串 解决方案 检查以下内容: http:/http://rayed.com/wordpress/wordpress/wpress/wp-content/wp-content/upload/lib.utf2win.
以下是关于 utf-8 的编程技术问答
str_word_count()函数返回一个数组,将所有单词保留在字符串中.它效果很好,除非使用特殊字符.在这种情况下,PHP脚本通过Querystring接收字符串: 我打开时: http://localhost/index.php? > header('Content-Type: text/html; charset=utf-8'); print_r(str_word_count($_GET['q'],1,'ó')); 而不是返回: [0] this [1] wórds ...它返回: [0] this [1] w [2] rds 此功能如何支持通过Querystring发送的特殊字符? 更新 - 通过使用 Mario 的解决方案: function sanitize_words($string) { preg_match_all("/\p{L}[\p{L}\p{Mn}\p{Pd}'\x{2019}]*/u",$string,$
我看到帖子在htaccess重写规则我认为这很棒,但是我首先遇到的一个更根本的问题: 我需要展开以处理用于查询字符串参数的UTF-8字符,目录名称,文件和显示给用户的名称等. 我将Apache配置为Defaultcharset UTF-8,如果有的话,我的PHP也是如此.我的原始重写规则过滤了所有的所有内容,除了常规的A-ZA-Z以及下划线和连字符.它起作用了.现在,其他任何东西都会给您404(这是我想要的!),但是似乎一切都匹配了,包括我不想要的东西,尽管它似乎不匹配,否则它不在查询字符串中是常规的A-ZA-Z_-字符串. 我觉得这很困惑,因为规则说将您匹配到查询字符串中: 这是原始规则: RewriteRule ^/puzzle/([A-Za-z_-]+)$ /puzzle.php?g=$1 [NC] 这是修订的规则: RewriteRule ^/puzzle/(\w+)$ /puzzle.php?g=$1 [NC] 我进行了更改,因为我在
我的zend_json在这里编码一个对象时正在混乱.我正在编码一个具有两个元素的关联数组: 元素一个是另一个关联数组,而元素2是HTML字符串.他正在努力,以至于html字符串部分仅包含null!?!?!?!? 我在上面做一个var_dump时未经编码的元素...对不起,很宽松的元素... 它非常不稳定 - 我不明白这里有什么问题... array ( 'map' => array ( 0 => array ( 'id' => '1403', 'name' => 'Amborovy Airport (Philibert Tsiranana Airport)', 'label' => 'Amborovy Airport (Philibert Tsiranana Airport)', 'html' => 'Amborovy Airport (Philibert Tsiranana Airport)',
我试图比较两个字符串,说émilie和Zoey.好吧," e"是在" z"之前出现的,但是在ASCII图表z上是在é之前出现的,因此正常if ( str1 > str2 )无法正常工作. 我尝试使用if (strcmp(str1,str2) > 0)仍然不起作用.因此,我正在研究一种本机方法,将字符串与UTF-8字符进行比较. 解决方案 重要 此答案是针对无法运行/安装" Intl"扩展名的情况,并且仅通过将重音字符替换为非重音字符来对字符串进行分类. 使用 collator使用 在PHP 5.2 中通过非重音字符进行排序 您可以尝试使用ICONV()和//Translit选项将两个字符串转换为ASCII,以摆脱重音字符; $str1 = iconv('utf-8', 'ascii//TRANSLIT', $str1); 然后进行比较 请参阅此处的文档: http://www.php.net/manual/manual/manual/en
我正在使用PHP 14. März 2012创建这样的德语日期格式(2012年3月14日). 我正在使用包含Unix时间戳的$date[0],然后将其转换为可读的德语日期. $date_day_month = strftime('%d. %B', $date[0]); $date_year = strftime('%Y', $date[0]); echo $date_day_month . $date_year; 但是,我以某种方式获得了umlaut ä的问号 14. M�rz 2012 为什么要解决这个问题?预先感谢. 解决方案 您可以尝试制作网页UTF-8,将其放入head标签中: strftime取决于该语言环境的正确设置,因此请检查您的setlocale()并确保在机器上运行的机器上存在语言环境
我是新来的,所以如果我做错了什么,我深表歉意. 我有一个表格,将用户输入提交到另一页上.预计用户将键入ä,Ö,é等...我将以下所有内容放在文档中: header('Content-Type:text/html; charset=UTF-8');
我什至尝试过: ini_set('default_charset', 'UTF-8'); 当另一页加载时,我需要检查用户输入的内容: if ( $_POST['field'] == $check ) { ... } 但是,如果他输入了诸如"münchen"之类的东西,则PHP将将"mémnchen"与"münchen"进行比较,即使应该将其触发,也永远不会触发.由于到处
我正在使用MySQL_REAL_ESCAPE_STRING从DB中取出内容. 因此,新系列字符现在显示为" \ n". 问题在于,此内容显示给 标签中的用户,因此我不能用 替换\ n. 我想我可以在将结果插入. Somoneone可以在这里提供帮助吗?由于安全策略,不使用mysql_real_escape_string并不是真正的选择. 谢谢. 解决方案 echo '
'.str_replace('\n', "\n", $string).'
'; 其他解决方案 为什么不... echo str_replace('\\n', PHP_EOL, "few lines\nof text here,\nblah, blah! etc!"); 其他解决方案 str_replace("\\n","\n",$data);
我正在使用从Excel导出的CSV文件. i有一个列,其中包含1 234,00的值.我需要用PHP将所有空格远离这类列,并且我尝试使用preg_replace("/\s*/","",$column)以及str_replace(" ","",$column)进行操作.我几乎准备失去它,所以我用十六进制编辑器瞥了一眼CSV文件并注意到,这个空间由两个十六进制值C2和A0组成,C2和A0似乎是UTF-8非破坏空间./p> 但是我很吮吸编码的东西,但我仍然对找到一种删除它们的方法感到困惑.有什么想法吗? 解决方案 $column = str_replace("\xc2\xa0", '', $column); 其他解决方案 您可以使用trim trim($data['value'], " \t\n\r\0\x0B\xc2\xa0") 其中\t\n\r\0\x0B是虚假掩码,\xc2\xa0需要添加
此代码 print mb_substr('éxxx', 0, 1); 打印一个空白空间:( 它应该打印第一个字符é.但是,这似乎有效: print mb_substr('éxxx', 0, 2); 但这是不对的,因为(0,2)表示2个字符... 解决方案 尝试将编码参数传递给MB_SUBSTR,因此: print mb_substr('éxxx', 0, 1, 'utf-8'); 永远不会自动检测到编码. 其他解决方案 实际上,我发现在某些系统中,多字节函数默认为ISO-8859-1用于内部编码.这有效地破坏了他们处理多字节文本的能力. 设置良好的默认值可能会解决此问题和其他一些问题: mb_internal_encoding('UTF-8');
所以首先让我们看看是否正确: charset是一组符号和编码.整理是一组比较字符中字符的规则. 我应该使用utf8mb4,因为mysql utf8是欺诈,最新的3个bytes,而不是php中的真实最新的bytes real utf8 charset. . 因此,utf8mb4是一个charset,utf8mb4_unicode_ci/utf8mb4_bin是他许多可用碰撞的2个. utf8_unicode_ci做病例不敏感的比较和其他特殊比较(例如,我听说它与法语中的所有口音混乱了). utf8_bin对细胞敏感很敏感,因为它比较了字符的二进制值. 现在问题: 例如,如果我想使用utf8mb4_unicode_ci允许案例敏感的登录名,我将不得不做: SELECT name FROM table WHERE BINARY name = 'MyNaMEiSFUlloFUPPERCases'; 例如,如果我想使用UTF8MB4_BIN允许对案例
我已经阅读了有关这种情况的大多数问题和答案,但是我无法解决我的角色问题.我的数据库的默认字符集是UTF8,所有表的整理都是UTF8_General_Ci.我敢肯定,所有设置都是UTF8和UTF8_General_Ci,因为我已经检查了他们数十亿时间.问题是在表格中发布值之后,它似乎不像我在数据库中想要的内容,而且如果我从phpmyadmin中编辑数据库时,当我获取数据时,它又不会显示我想要的内容. . DB连接有效,我像之前提到过有关这种情况的编辑,但是我的脚本是关于字符指定的错误. DB连接代码是: try { $db = new PDO("mysql:host={$db_server};dbname={$db_name};charset=utf-8", $db_user, $db_password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); $db->setAttribute(PDO::AT
我阅读 Joel关于角色集的文章,所以我正在接受他的建议在我的网页和数据库中使用UTF-8.我不明白的是如何处理用户输入.正如乔尔(Joel)所说:"在不知道它使用的编码的情况下,拥有一根字符串是没有意义的."但是我怎么知道编码用户输入字符串使用的是什么?如果我有 在我的页面上,我怎么知道我从用户那里得到的编码?如果用户放入一些特殊的ASCII符号,例如♣或™之类的东西怎么办?是否有某种方法可以检测到用户输入给我UTF-8中未知的东西?如何处理这种事情有一些标准吗? 解决方案 检查 http标头发现编码字符. 其他解决方案 如果您的Web Page使用UTF-8,则浏览器将为您转换为UTF-8.因此,即使是特殊字符在ASCII中,它也将以UTF-8提交. 但是,您永远都不知道用户从用户中切换回编码为ISO-8859 - *. 的用户发痒. 您可以在 mb_detect_
i用mysql_query("SET NAMES 'utf8'"); 插入/更新文本到UTF8_UNICODE_CI编码表 在MySQL桌上看起来像",",",".但是当我用php打印时, 看起来像"�??"在页面上. 我尝试添加 但不起作用. 如何在页面上正确显示Unicode Chars? 谢谢 解决方案 您应该使用: mysql_set_charset('utf8'); 而不是 mysql_query("SET NAMES 'utf8'") 我建议在PHP中设置标头 header('Content-Type: text/html; charset=UTF-8'); 其他解决方案 php的UTF-8设置: ini_set("mbstring.language",
我正在制作PHP中的动态Unicode图标.我想要Unicode图标的UTF-8代码. 到目前为止,我已经完成了: $value = "1F600"; $emoIcon = "\u{$value}"; $emoIcon = preg_replace("/\\\\u([0-9A-F]{2,5})/i", "$1;", $emoIcon); echo $emoIcon; //output 😀 $hex=bin2hex($emoIcon); echo $hex; // output 26237831463630303b $hexVal=chunk_split($hex,2,"\\x"); var_dump($hexVal); // output 26\x23\x78\x31\x46\x36\x30\x30\x3b\x $result= "\\x" . substr($hexVal,0,-2); var_dump($result); // output \x2