在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答

有全局裝yarn,或者執(zhí)行yarn有什么報(bào)錯(cuò)么?

逗婦乳 回答

例如?
如果你是用在兩個(gè)條件下的話可以. 使用 and 或 or 組合起來.
如果你是 where col like in 這樣的話. 或者 where col in (like ...) 這樣的話,明顯不行.

野橘 回答

1.從前端講的話,希望你用promise,點(diǎn)了送禮后,讓按鈕灰掉等接口返回后再讓按鈕可用
2.從后端講你update的時(shí)候加個(gè)where number >0;他就不會(huì)成負(fù)數(shù)了,后面的update會(huì)失敗。

尛曖昧 回答

查看輸出文本內(nèi)容,發(fā)現(xiàn)有反饋信息,說是沒接收到參數(shù)值,檢查后發(fā)現(xiàn)是POST參數(shù)名寫錯(cuò)了。
修改$postParm = "target-password=welcome1"后,成功保存文件。

離觴 回答

你看一下兩個(gè)sessionID是否一致,如果不是一致的話,可能存在跨域的問題。你是不是前端訪問后臺(tái)接口?

夏木 回答

懷疑你們的這幾個(gè)文件返回了

<html>
404
</html>
萌小萌 回答

經(jīng)過一個(gè)下午的折騰,上周五還是發(fā)現(xiàn)出現(xiàn)該異常情況的原因。概括來說還是中文轉(zhuǎn)編碼的問題,即utf-8轉(zhuǎn)gbk出現(xiàn)的小部分行缺少空格或者雙引號(hào)的問題。
出現(xiàn)問題的原因:
在進(jìn)行導(dǎo)出的過程中,接收其他程序傳過來的數(shù)組參數(shù),均為utf-8編碼,我這邊在調(diào)用fwrite或者fputcvs寫入文件的過程中并沒有進(jìn)行 iconv("UTF-8", "GB2312//IGNORE", $header),而是將文件保存在了 export目錄下,然后由vuejs做的后臺(tái)調(diào)用位于同application下的一個(gè)共用類的 export方法,該方法是這樣的:

public function export()
{
    $file = \Request::get('file');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename=export.csv');
    header('Cache-Control: max-age=0');
    $contents = file_get_contents(\Env::get('runtime_path') . '/export/' . $file);
    echo iconv("UTF-8", "GB2312//IGNORE", $contents);
    @unlink(RUNTIME_PATH . '/export/' . $filename);
    exit;
}

問題就出在 echo iconv("UTF-8", "GB2312//IGNORE", $contents); 這句代碼上面,這里看到是對(duì)傳入的整個(gè)文件進(jìn)行轉(zhuǎn)編碼的,這里未進(jìn)行測(cè)試到底多少行的數(shù)據(jù)會(huì)出現(xiàn)缺少逗號(hào)引號(hào)的問題。
最終的解決思路是,把共用類中對(duì)整個(gè)文件的轉(zhuǎn)編碼放到寫入方法中,逐條轉(zhuǎn)編碼就解決了該問題。

更改后的代碼:

public static function createCsv($data, $header = [], $filename = '')
{
    // 參數(shù)判斷
    $data = is_object($data) ? $data->toArray() : $data;
    $header = is_array($header) ? $header : [];
    $filename = (1 > strlen(trim($filename))) ? 'csv-' : trim($filename);
    if (empty($data)) {
        return false;
    }

    // 文件名/目錄
    $filename = $filename . date("YmdHis", time()) . rand(1000, 9999) . ".csv";
    $dir = Env::get('runtime_path') . '/export/';
    if (!is_dir($dir) && !mkdir($dir)) {
        return false;
    }

    // 打開文件指針資源
    $handle = fopen($dir . $filename, 'w+');
    if (!$handle) {
        return false;
    }

    // 寫入文件header頭
    if (!empty($header)) {
        foreach ($header as $key => $item) {
            $header[$key] = iconv("UTF-8", "GB2312//IGNORE", $item);
        }
        $res = fputcsv($handle, $header);
        if (!$res) {
            return false;
        }
    }

    // 判斷header是索引數(shù)組還是關(guān)聯(lián)數(shù)組
    $is_assoc = array_keys($header) !== range(0, count($header) - 1);

    // 寫入文件內(nèi)容
    $frequency = 0; // 頻率
    $limit = 100000;
    foreach ($data as $datum) {
        $frequency++;
        if ($limit == $frequency) {
            // 刷新輸出buffer
            ob_flush();
            flush();
            $frequency = 0;
        }
        // 如果是關(guān)聯(lián)數(shù)組,則獲取內(nèi)容中和頭部key相對(duì)應(yīng)的值
        if ($is_assoc) {
            $csv = "";
            foreach(array_keys($header) as $item) {
                $datum[$item] = iconv("UTF-8", "GB2312//IGNORE", $item);
                $val = str_replace('"', '""', $datum[$item]); // 將單個(gè)雙引號(hào)替換為兩個(gè)雙引號(hào)
                $csv .= '"' . $val . '",'; // 為每個(gè)字符增加雙引號(hào),并添加逗號(hào)分割符
            }
            $csv = substr($csv, 0, -1); // 去掉每行最后一個(gè)逗號(hào)
            $csv .= "\n"; // 添加換行符
            $res = @fwrite($handle, $csv);
        } else {
            $res = fputcsv($handle, $datum);
        }

        if (!$res) {
            return false;
        }
    }

    // 關(guān)閉指針資源
    fclose($handle);
    return Url::build('erp/Common/export', 'file=' . $filename);
}


public function export()
{
    $file = \Request::get('file');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename=export.csv');
    header('Cache-Control: max-age=0');
    $contents = file_get_contents(\Env::get('runtime_path') . '/export/' . $file);
    echo $contents;
    exit;
}

調(diào)用步驟:

先調(diào)用createCsv生成文件,再調(diào)用export下載。

———————————————————————分割線——————————————————————

另外一種解決思路:

csv文件直接存儲(chǔ) UTF-8 編碼:
即不需要進(jìn)行 iconv 轉(zhuǎn)編碼,這樣會(huì)有個(gè)小問題就是MacOS中的Excel無法自動(dòng)識(shí)utf-8編碼,中文會(huì)出現(xiàn)亂碼的情況。

原因:

Excel在讀取csv的時(shí)候是通過讀取文件頭上的bom來識(shí)別編碼的,如果文件頭無bom信息,則默認(rèn)按照unicode編碼讀取。(這個(gè)bom是微軟自己定義的一種文件頭部協(xié)定,顧名思義存儲(chǔ)在文件頭部,存儲(chǔ)內(nèi)容就是標(biāo)識(shí)文件編碼的信息。)而我們生成csv的平臺(tái)不一定遵循微軟的bom協(xié)議,導(dǎo)致如果輸出非unicode編碼的csv文件(例如utf-8),并且沒有生成bom信息的話,Excel自動(dòng)按照unicode編碼讀取,就會(huì)出現(xiàn)亂碼問題了。

作者:李蛟 鏈接:https://www.zhihu.com/questio...
來源:知乎 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

根據(jù)知乎查到的答案,原來是這里未遵循微軟的bom協(xié)議。原因找到了,解決方案就能出了。

解決方法:
fopen 方法下寫入bom頭,這里簡(jiǎn)單寫一下步驟

function createCsv($filename, $header, $data) {
    $handle = fopen($filename, 'w+');
    // 添加BOM,標(biāo)識(shí)為UTF-8格式
    fwrite($handle, chr(0xEF).chr(0xBB).chr(0xBF));
    // 寫入頭部
    fputcsv($handle, $header);
    // 逐行寫入內(nèi)容
    foreach ($data as $datum) {
        fputcsv($handle, $datum);
    }
    // 關(guān)閉指針資源
    fclose($handle);
}

另外再補(bǔ)充一下 Bom 簡(jiǎn)介

  • 在UCS 編碼中有一個(gè)叫做”ZERO WIDTH NO-BREAKSPACE”的字符,它的編碼是FEFF。
  • FFFE在UCS中是不存在的字符,所以不應(yīng)該出現(xiàn)在實(shí)際傳輸中。
  • UCS規(guī)范建議我們?cè)趥鬏斪止?jié)流前,先傳輸字符”ZERO WIDTH NO-BREAK SPACE”。
  • 這樣如果接收者收到FEFF,就表明這個(gè)字節(jié)流是Big-Endian的;
  • 如果收到FFFE,就表明這個(gè)字節(jié)流是Little-Endian的。
  • 因此字符”ZERO WIDTH NO-BREAK SPACE”又被稱作BOM。
  • UTF-8不需要BOM來表明字節(jié)順序,但可以用BOM來表明編碼方式。
  • 字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8編碼是EF BB BF。
  • 所以如果接收者收到以EF BB BF開頭的字節(jié)流,就知道這是UTF-8編碼了。
  • Windows就是使用BOM來標(biāo)記文本文件的編碼方式的。

該內(nèi)容來自 http://blog.csdn.net/chaozhi_... 這篇博客

陌如玉 回答

就算加了幾個(gè)字段,但是首字母和index對(duì)應(yīng)關(guān)系還是沒變! 還是不需要散列函數(shù)呀?

青檸 回答

我已解決,是我自己打了斷點(diǎn),但我沒想到重新編譯后,微信小程序打的斷點(diǎn)依然存在。

慢半拍 回答

應(yīng)該是這里 <el-date-picker v-model="value1" > 設(shè)置的初始值 value1設(shè)置成非Date對(duì)象,比如
"2018-01",這種字符串類型, 字符串類型對(duì)應(yīng)就沒有 gethours方法了,所以報(bào)錯(cuò)了。

亮瞎她 回答

數(shù)組好像只有push,shift系列的方法能觸發(fā),如果是循環(huán)把數(shù)組的每個(gè)元素都綁在視圖上理論上應(yīng)該是可以更新的

鐧簞噯 回答

1.賦值或插入超過長(zhǎng)度的值。、
2.違反了SIMPLE_INTEGER Subtype約束
3.用戶定義的約束子類型檢測(cè)超出范圍的值。
4.約束子類型與Same Base Type之間的隱式轉(zhuǎn)換
5.同類型子類型間同類型的隱式轉(zhuǎn)換

離夢(mèng) 回答

ng-table篩選使用的是ng自帶的$filter 可以設(shè)置filterOptions.filterFn來自定義篩選

http://ng-table.com/api-docs/...

https://github.com/esvit/ng-t...

陌璃 回答

android獲取wifi名稱的代碼

public String getWifiName(Context context) {
    WifiManager manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    if (manager.isWifiEnabled()) {
       WifiInfo wifiInfo = manager.getConnectionInfo();
       if (wifiInfo != null) {
          DetailedState state = WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState());
          if (state == DetailedState.CONNECTED || state == DetailedState.OBTAINING_IPADDR) {
              return wifiInfo.getSSID();
          }
       }
    }
    return null;
}

iOS獲取wifi名稱的代碼

+ (NSString *)GetCurrentWifiHotSpotName {    
    NSString *wifiName = nil;
    NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
    for (NSString *ifnam in ifs) {
        NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
        if (info[@"SSID"]) {
            wifiName = info[@"SSID"];
        }
    }
    return wifiName;
}
瘋浪 回答

先使用$("#id").spectrum("destroy");解除綁定
然后重新綁定一下試試

涼薄 回答

把題主的例子稍微復(fù)雜了下,考慮了全部相同導(dǎo)致 num++ 的情況,另,優(yōu)化了代碼

var a = [{
    aId: 1,
    aList: [{
        bId: 22,
        bList: [{
            cId: 333,
            cList: [{
                    dId: 4444,
                    num: 2
                },
                {
                    dId: 5555,
                    num: 1
                }
            ]
        }]
    }]
}];

var b = [{
    aId: 1,
    aList: [{
            bId: 22,
            bList: [{
                cId: 333,
                cList: [{
                    dId: 5555,
                    num: 1
                }, {
                    dId: 6666,
                    num: 1
                }]
            }]
        },
        {
            bId: 33,
            bList: [{
                cId: 987,
                cList: [{
                    dId: 5678,
                    num: 1
                }]
            }]
        }
    ]
}];

var result = [{
    aId: 1,
    aList: [{
        bId: 22,
        bList: [{
            cId: 333,
            cList: [{
                    dId: 4444,
                    num: 2
                },
                {
                    dId: 5555,
                    num: 2
                },
                {
                    dId: 6666,
                    num: 1
                }
            ]
        }]
    }, {
        bId: 33,
        bList: [{
            cId: 987,
            cList: [{
                dId: 5678,
                num: 1
            }]
        }]
    }]
}];


console.log(JSON.stringify(reduce(a, b)) === JSON.stringify(result)); //true

function reduce(a, b) {
    let levelArr = ['a', 'b', 'c', 'd'],
        //如果后面還有 e,f,g 只需要修改這里就行;
        result = iterateCompareId(a, b, undefined, 'a');

    function iterateCompareId(listA, listB, listTemp, level) {
        // 保存 listA 的副本,后期把 listB 中的數(shù)據(jù)逐步加給 listTemp,作為函數(shù)返回值;
        // 注意這里 listTemp 反復(fù)迭代,但始終指向的是保存在內(nèi)存里的同一個(gè)對(duì)象,一直在修改 listTemp 的數(shù)據(jù);
        listTemp = listTemp === undefined ? JSON.parse(JSON.stringify(listA)) : listTemp;
        listB.forEach((objB, indexB) => {

            //求出當(dāng)前 level 中, listB 中項(xiàng)在 listA 中的索引,不存在,則返回 -1

            let IndexOfIdInA = listA.findIndex((objA, indexA) => {
                return objA[level + 'Id'] === objB[level + 'Id'];
            });

            //如果當(dāng)前 level 中,listA 中 沒有 listB  的 id,把 listB 這個(gè)level的數(shù)據(jù)拷給 listTemp

            if (IndexOfIdInA === -1) {
                listTemp.push(objB);
            } else {

                //如果有,判斷是否到最后一層
                //不是最后一層,切換到下一層 level,繼續(xù)    
                //是最后一層,listTemp 當(dāng)前層 num+=1;

                if (levelArr.indexOf(level) != levelArr.length - 1) {
                    iterateCompareId(listA[IndexOfIdInA][level + 'List'], objB[level + 'List'], listTemp[IndexOfIdInA][level + 'List'], levelArr[levelArr.indexOf(level) + 1]);
                } else {
                    listTemp[IndexOfIdInA].num += 1;
                }

            }
        });
        return listTemp;
    }

    return result;
}
墨染殤 回答

UITextField表示這鍋我不背

出現(xiàn)這種情況你難道不是應(yīng)該先檢查下按鈕事件的綁定,既然用的mvvm,去view檢查下賦值,綁定有問題