導航:首頁 > 源碼編譯 > iconv源碼

iconv源碼

發布時間:2022-05-13 15:33:04

1. 以下編碼轉換linux運行出錯iconv: Invalid or incomplete multibyte or wide character,怎麼改才能轉換

outlen的初始化長度應該和output的空間大小一致

2. 一鍵上傳淘寶php源碼

PHP實現採集抓取淘寶網單個商品信息,本文是一種實現思路,使用file_get_contents函數實現,並給出了採集正則,需要的朋友可以參考下
調用淘寶的數據可以使用淘寶提供的api,如果只需調用淘寶商品圖片名稱等公開信息在自己網站上,使用php中的 file_get_contents 函數實現即可。
思路:
file_get_contents(url) 該函數根據 url 如 http://www..com 將該網頁內容(源碼)以字元串形式輸出(一個整字元串),然後配合preg_match,preg_replace等這些正則表達式操作就可以實現獲取該url特定div,img等信息了。當然前題是淘寶在單個商品頁面的結構是固定的,如500圖的img中id就是J_ImgBooth!
具體實現方法:(獲取500圖,名稱,價格,屬性及商品描述)
復制代碼 代碼如下:
$text=file_get_contents("http://item.taobao.com/item.htm?id=2380347279"); //將url地址上頁面內容保存進$text
A.獲取500圖:
復制代碼 代碼如下:
preg_match('/<img[^>]*id="J_ImgBooth"[^r]*rc=\"([^"]*)\"[^>]*>/', $text, $img);
//運用正則抓取img標簽中id為J_ImgBooth的img,$img[0]為該500圖img標簽,$img[1]為500圖的圖片地址;
B. 獲取名稱:
復制代碼 代碼如下:
preg_match('/<title>([^<>]*)<\/title>/', $text, $title);
//因為正文中的商品名稱標簽沒有特殊class或id正則不好抓取,就抓<title>標簽中的內容了,一般來說title中內容就是商品名稱了(實際有些出入),$title[0]整個title標簽 $title[1]標簽中內容;
$title=iconv('GBK','UTF-8',$title);
//如果你的網站是utf8編碼,那麼需要進行一下轉碼(淘寶是gbk編碼)
C.獲取價格:
復制代碼 代碼如下:
preg_match('/<([a-z]+)[^i]*id=\"J_StrPrice\"[^>]*>([^<]*)<\/\\1>/is', $text, $price);
//同理獲取id為J_StrPrice的標簽內容$price[2], $price[0]是整個標簽, $price[1]為strong標簽名;
$price=floatval($price);//放入資料庫估計還有轉一下變數類型
D.獲取屬性:
這之前獲取的內容都是在單標簽中相對只需一個正則就可搞定,然而如果要獲取如
復制代碼 代碼如下:

<div id=」xxx」>

<ul>

</ul>
<div>…
<div>…
</div>
</div>
</div>

這樣特定div中有未知n個<>標簽,獲取該特定div將會非常的困難,搜了下網上,最接近的也只是」/<([a-z]+)[^>]*>([^<>]|(?R))*<\/\\1>/」這樣使用遞歸抓取標簽對,但是他不能抓特定標簽,所以想要輕松抓取class=」attributes」的div我是沒法辦到了。但是淘寶網頁有其特殊性,就是它的各個標簽結構基本是固定的…<div>…</div>標簽後面不是</div><div id=」description」>就是</div><div>,所以我們可以採用變通法達到獲取屬性標簽內容的目的。
復制代碼 代碼如下:
preg_match('/<(div)[^c]*class=\"attributes\"[^>]*>.*<\/\\1>/is', $text, $text0);
//這個正則會抓取<div開始到整個頁面最後一個</div>標簽,當然我們屬性標簽就在這個的前面部分。
$text1=preg_replace("/<\/div>[^<]*<(div)[^c]*id=\"description\"[^>]*>.*<\/\\1>/is","",$text0);
//匹配到</div ><div id=」description」>至最後</div>然後用」」代替(就是把匹配的刪除了),所以如果attributes的div後面緊跟的是description那麼我們已經達到目的了。
$attributes=preg_replace("/<\/div>[^<]*<(div)[^c]*class=\"box J_TBox\"[^>]*>.*<\/\\1>/is","",$text1);
//如果attributes後面緊跟box J_Tbox標簽,那麼我們還需要使用以上這步來剔除box J_Tbox標簽,當然如果attributes的div後面緊跟的是description,這一步將不會匹配到任何即什麼都不會做。
E.獲取描述:
通過上面方法你肯定覺得淘寶頁面上任何標簽都可以很簡單獲取了吧(我之前也是這么想的),但是使用這個方法獲取描述時得到的內容將會是「描述載入中」,是的,這個描述內容不是在源碼中的,它是打開頁面載入進一大堆js後,不知道從淘寶的哪個角落中載入進來的。
好吧,那麼我們也可以模仿它放一些js進去。不知道哪些對載入描述有用?沒事,全載入進來肯定沒錯。不知道需要放那些特定div上去有作用?抓一個源碼,刪掉一些div一步步試試看,你會發現「<div id=」detail」> </div>
復制代碼 代碼如下:
<div id="description">
<div id="J_DivItemDesc">描述載入中</div>
</div>
這幾個div是載入描述所必須的,那麼下面就是寫代碼了:
復制代碼 代碼如下:
preg_match_all('/<script[^>]*>[^<]*<\/script>/is', $text, $content);//頁面js腳本
$content=$content[0];
$description='<div id="detail"> </div>
<div id="description">
<div id="J_DivItemDesc">描述載入中</div>
</div>';
foreach ($content as &$v){$description.=iconv('GBK','UTF-8',$v);};
//將這個$description放進頁面,描述就會自動的載入進來了,當然多個商品描述在同一個頁面也會只有一個描述會被載入的。

3. php獲取網頁源碼內容有哪些辦法

可以參考以下幾種方法:

方法一: file_get_contents獲取

<span style="white-space:pre"></span>$url="http://www..com/";

<span style="white-space:pre"></span>$fh= file_get_contents

('http://www.hxfzzx.com/news/fzfj/');<span style="white-space:pre"></span>echo $fh;

拓展資料

PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。

用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

4. 易語言 下載文件

我們以網路雲客戶端的直鏈為例,提取直鏈中BaiYunGuanjia_5.3.6.exe的BaiYunGuanjia_5.3.6的文本文字。

運行易語言,進入「新建工程」文件對話框,選擇「Windows窗口程序」然後點擊「確定」按鈕,進入「Windows窗口程序」設計界面。

在啟動窗口我們添加一個編輯框和按鈕,便於一會便於展示提取出來的文本。

點擊按鈕進入窗口程序集界面,我們先添加精易模塊V3.3,然後按Ctrl+L鍵創建一個變數,變數名:文件名,類型:文本型。

開始寫源碼,如下圖,使用的是精易模塊里的文本_取出中間文本,我們要取出直鏈里的文本。

然後我們再寫一個命令,把提取出來的文件名放入編輯框中,來確認下提取的是不是正確。

完成後我們直接運行,點擊按鈕,看,我們需要的文件名直接出現在了編輯框里。

文件名提取是為了在不改名字的情況下,把下載的文件寫入電腦,然後自動執行。有很多的擴展思路。

5. 易語言 http讀文件() 怎麼讀出來的網頁源碼是亂碼呀

原因是:操作錯誤導致的,具體解決方法步驟如下:

1.首先打開電腦,在電腦中運行「易語言」主程序,彈出「新建項目對話框」,選擇「Windows窗口程序」,點擊「確定」,進入「Windows窗口編程界面」。

6. 為什麼PHP源碼上傳上去有問號本地源碼是正常的!是不是編碼不對

我看了一下,你的編碼指定的是Utf-8,不知道你有問號的是資料庫讀出來的還是靜態的,使用utf-8編碼的話,你用editplus打開看一下你的php文件和模板文件都要是Utf-8格式的,你可以打開另存為,下面有個選擇編碼的選項。

如果問好部分是動態的,看你資料庫裡面編碼是否是utf-8,如果是其他編碼要用iconv把編碼轉換一下

php中header也要聲明是Utf-8

7. liunx轉碼和去空格怎麼一起用

用法: iconv [選項...] [FILE...]
轉換給出文件的編碼從一種到另外一種.

輸入/輸出格式規范
-f, --from-code=NAME 原始文本編碼
-t, --to-code=NAME 輸出編碼

信息
-l, --list 列出所有已知編碼字元集

輸出控制:
-c 忽略輸出中的無效字元
-o, --output=FILE 輸出文件
-s, --silent suppress warnings
--verbose 列印進程信息

-?, --help 顯示此幫助列表
--usage 提供簡短的使用信息
-V, --version 顯示程序版本號

一般 iconv -c -fgbk -tutf8 XXX.txt -o XXX-u8.txt就可以了,-c選項很有用,遇到錯誤還可以繼續而不是退出。

問題是現在文件有成千上萬,試圖用for循環完成這個任務:
for i in `ls *.txt` ; do iconv -c -fgbk -tutf8 $i -o u$i ;done
但事與願違,檢查了下發現是因為有寫文件名帶有空格,導致變數i賦值不對,比如對文件「十二樓 清 李漁.txt」,i被賦值三次,得到如下出錯信息
iconv: 無法打開輸入文件'十二樓': 沒有該文件或目錄
iconv: 無法打開輸入文件'清': 沒有該文件或目錄
iconv: 無法打開輸入文件'李漁.txt': 沒有該文件或目錄

研究了下,想到一個辦法可以勉強完成任務,源碼如下:

#! /bin/bash

# convert txt files in current dir fro gbk to utf8
# output saved to the dir `pwd`_u

PWD=`pwd`
UDIR="$PWD"_u
mkdir $UDIR
for i in `ls -l *.txt|cut -c51-120 |tr [:blank:] _` ; do
iconv -c -fgbk -tutf8 "${i//_/ }" -o "$UDIR/$i"
done

上面用到cut和tr先將空格轉換,以便變數i正確賦值,調用時再通過字元替換(${i//_/ })轉回來。效果是將本目錄下的所有txt文件從GBK轉碼為UTF8的同名文件(如文件名有空格則被下劃線替換),如當前目錄為mydir/test/,則轉換後的文件放在mydir/test_u/下面。

還沒想好如何處理當前目錄下的子目錄,估計要用find命令,關鍵是先建立一個與當前目錄結構相同的平行目錄。如果你有好辦法,請留言。

_____________________
updated in 05/13/2010
1. google了下,發現處理帶空格文件名不用這么麻煩,用 for i in *.txt 就可以了,上面用for i in `ls *.txt`是畫蛇添足了。(cf: http://blog.csdn.net/sabalol/archive/2009/11/12/4804607.aspx)

2. 復制目錄結構用find和-exec就可實現,如在當前test目錄下執行:
find . -type d -exec mkdir -p ../test_u/{} \;

8. php遍歷代碼修改: 我的源碼現在是這樣的: <php include_once 'comm/config.php'; include 'c...

給你一個思路,你參考一下吧;
把所有的數據拼成一個大數組,
然後拼sql,再進行一次插入,
這樣效率會高的多,
$preg = "/item_id=([0-9]*).*.target=\"_blank\">/";
preg_match_all($preg,$con,$iid); //參數(正則,獲取的內容,返回的數據)
$preg = "/data-ks-lazyload=\"([^<]*)\"\/><\/a>/";
preg_match_all( $preg, $con, $img);//獲取圖片地址
$sql="insert into ju_itemss(iid,title) values";
for($i=0;$i<count($iid);$i++)
{
$sql=$sql."(".$iid[$i].",'".$title[$i]."'),";

}
$sql=substr($sql,0,-1);//去掉最後多的那個逗號
$result=mysql_query($sql);

這樣應該是最快的了

9. 如何從android源碼中編譯webkit

android本來自帶了webkit瀏覽器,但是要對其進行custom就需要android源代碼才行, 但是在沒有源碼的情況下,那麼就需要用到ndk了,比如,我是在xoom上做custom webkit的。
1、雖然ndk提供的庫很少,而且沒有skia,但是好在有bitmap,這樣顯示慢了點,沒有硬加速,但不是不可能。
2、webkit需要的第三方庫,freetype,png,jpeg,sqlite3等雖然android源碼中有,但是ndk沒有開放,因此所有的第三方庫,freetype,png,jpeg,sqlite3,cairo,curl,fontconfig,pixman,iconv等都需要用ndk cross-compile成靜態庫,然後鏈接到最終的動態庫中。
3、選擇iconv是icu太大,而且沒有多語言的需求,選擇cairo+pixman是skia的移植性不好,而且cairo支持很多種backend。
4、編譯第三方庫需要用到autoconfig,ndk中有如何生成交叉編譯鏈的文檔,然後在configure時使用這個工具鏈就可以了,但是android用到的是bionic庫,因此會有很少的地方需要修改,有些庫也不能生成test程序,但是靜態庫是沒問題的。
5、利用ndk生成的交叉工具鏈,在加上webkit自帶的cmake編譯系統,生成webkit的動態庫是沒有問題的,當然是webkit的內核,而且有些平台相關的部分代碼需要修改。
6、但是只要是以linux平台為基礎,修改還是很容易的,我移植的webkit是先移植到linux平台上,然後移植到android平台上的,所以修改相對少了很多,但是修改大多都在WebCore/platform下,在選擇了的平台相關庫後,做相應的配置和修改。
7、其次是在WebKit目錄,這個主要是支持和使用WebCore,因此在需求不是整個瀏覽器,而只是正常地顯示網頁時,還是可以寫的比較簡單的。

10. windows下如何用iconv.h

頭文件"iconv.h"。iconv命令可以將一種已知的字元集文件轉換成另一種已知的字元集文件。
它的作用是在多種國際編碼格式之間進行文本內碼的轉換。
linux下的函數原型
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
iconv是一個計算機程序以及一套應用程序編程介面的名稱。
作為應用程序的iconv採用命令行界面,允許將某種特定編碼的文件轉換為另一種編碼。
iconv基於GPL公開源代碼,是GNU項目的一部分。在各種UNIX操作系統下均可使用,而在Windows系統,需要特殊的環境如cygwin或者GnuWin32等軟體平台下方可使用。現在在SourceForge上也有運行於Windows系統的,需要同時安裝gettext程序。
目前版本為2.3.26,支持的內碼包括:Unicode相關編碼,如UTF-8、UTF-16等等,各國採用的ANSI編碼,其中包括GB2312、BIG5等中文編碼方式。
輸入/輸出格式規范:
-f,--from-code=NAME始文本編碼-t,--to-code=NAME輸出編碼
信息:
-l,--list列舉所有已知的字元集
-c從輸出中忽略無效的字元-o,--output=FILE輸出文件-s,--silentsuppresswarnings--verbose列印進度信息-?,--help給出該系統求助列表--usage給出簡要的用法信息-V,--version列印程序版本號示例:
列出支持的字元編碼
[root@new55~]#iconv-..(aliases).所有已知字元集

閱讀全文

與iconv源碼相關的資料

熱點內容
南京解壓車要帶什麼 瀏覽:562
天堂2編譯視頻教程 瀏覽:392
伺服器沒有進程怎麼辦 瀏覽:784
阿里雲發布新物種神龍雲伺服器 瀏覽:59
數據結構遞歸演算法統計二叉樹節點 瀏覽:666
ev3怎麼編程 瀏覽:702
gzip壓縮教程 瀏覽:349
解壓模擬例子 瀏覽:984
流媒體伺服器如何實現視頻轉發 瀏覽:57
linux字元串md5 瀏覽:302
支撐突破選股源碼怎麼設置 瀏覽:934
湖南戴爾伺服器維修雲主機 瀏覽:494
解壓到文件夾的視頻都自動隱藏了 瀏覽:569
閱讀器支持php 瀏覽:222
人生需求怎麼解壓 瀏覽:795
pdf列印機找不到 瀏覽:1001
如何同時使用兩個apache伺服器 瀏覽:723
國外php論壇 瀏覽:966
災難是命令 瀏覽:604
linux火狐瀏覽器安裝 瀏覽:71