相关疑难解决方法(0)

使用PowerShell以UTF-8编写文件而不使用BOM

Out-File 似乎在使用UTF-8时强制BOM:

$MyFile = Get-Content $MyPath
$MyFile | Out-File -Encoding "UTF8" $MyPath
Run Code Online (Sandbox Code Playgroud)

如何使用PowerShell以UTF-8编写没有BOM的文件?

powershell encoding byte-order-mark utf-8

225
推荐指数
9
解决办法
21万
查看次数

为什么Git将此文本文件视为二进制文件?

我想知道为什么git告诉我这个:?

$ git diff MyFile.txt
diff --git a/MyFile.txt b/MyFile.txt
index d41a4f3..15dcfa2 100644
Binary files a/MyFile.txt and b/MyFile.txt differ
Run Code Online (Sandbox Code Playgroud)

他们不是文本文件吗?

我检查了.gitattributes,它是空的.为什么我收到这条消息?我不能再使用差异了

添加:

我注意到@文件中有一个权限,这是什么?这可能是原因吗?

$ls -all
drwxr-xr-x   5 nacho4d  staff    170 28 Jul 17:07 .
drwxr-xr-x  16 nacho4d  staff    544 28 Jul 16:39 ..
-rw-r--r--@  1 nacho4d  staff   6148 28 Jul 16:15 .DS_Store
-rw-r--r--@  1 nacho4d  staff    746 28 Jul 17:07 MyFile.txt
-rw-r--r--   1 nacho4d  staff  22538  5 Apr 16:18 OtherFile.txt
Run Code Online (Sandbox Code Playgroud)

git binary

135
推荐指数
9
解决办法
8万
查看次数

在Powershell中显示Unicode

虽然Powershell几乎不可能实现,但我想要实现的目标却相当简单.

我想显示文件的完整路径,其中一些文件的名称中包含阿拉伯语,中文,日语和俄语字符

我总是得到一些难以理解的输出,如下图所示 在此输入图像描述

在控制台中看到的输出正在被另一个脚本消耗.输出包含而不是实际的人物.

执行的命令是

(Get-ChildItem -Recurse -Path "D:\test" -Include *unicode* | Get-ChildItem -Recurse).FullName
Run Code Online (Sandbox Code Playgroud)

是否有任何简单的方法来启动PowerShell(通过命令行或以任何方式写入脚本),以便正确地看到输出.

PS我在Stack Overflow上经历了很多类似的问题,但除了称之为Windows控制台子系统问题之外,它们都没有太多的输入.

unicode terminal powershell utf-8 windows-console

25
推荐指数
3
解决办法
2万
查看次数

使用PowerShell将多个CSV文件合并为一个

您好我正在寻找powershell脚本,它将目录中的所有csv文件合并到一个文本文件(.txt)中.所有csv文件都有相同的标题,它总是存储在每个文件的第一行.所以我需要从第一个文件中获取头文件,但是在其余文件中应该跳过第一行.我能够找到完全符合我需要的批处理文件,但是我在一个目录中有超过4000个csv文件,并且完成这项工作需要45分钟以上.

@echo off
ECHO Set working directory
cd /d %~dp0
Deleting existing combined file
del summary.txt
setlocal ENABLEDELAYEDEXPANSION
set cnt=1
for %%i in (*.csv) do (
 if !cnt!==1 (
 for /f "delims=" %%j in ('type "%%i"') do echo %%j >> summary.txt
) else (
 for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> summary.txt
 )
 set /a cnt+=1
 )
Run Code Online (Sandbox Code Playgroud)

任何建议如何创建powershell脚本比这批代码更有效?

谢谢.

约翰

csv powershell batch-file

21
推荐指数
4
解决办法
6万
查看次数

在脚本中使用重定向会生成unicode输出.如何发出单字节ASCII文本?

我正在使用Sandcastle Helpfile Builder生成一个帮助文件(.chm).该项目是一个.shfbproj文件,它是XML格式,与msbuild一起使用.

我想自动更新生成的.chm文件中显示的页脚文本.我用这个片段:

$newFooter = "<FooterText>MyProduct v1.2.3.4</FooterText>";

get-content  -Encoding ASCII $projFile.FullName | 
    %{$_ -replace '<FooterText>(.+)</FooterText>', $newFooter } > $TmpFile

move-item $TmpFile $projFile.FullName -force
Run Code Online (Sandbox Code Playgroud)

定向到$ TmpFile的输出始终是一个多字节字符串.但我不希望这样.如何将输出的编码设置为ASCII?

unicode powershell

17
推荐指数
3
解决办法
9444
查看次数

通过ADB shell传输二进制数据(即使用tar快速传输文件)

我一直在尝试使用类似的东西将文件从我的Android设备移动到我的osx机器:adb shell tar -c directory_to_copy | tar -x.似乎远程tar正在工作,但文件被破坏的方式.经过一番游戏,我发现:

  • 似乎adb shell命令将LF转换为CRLF:

    % adb shell 'cd /mnt/sdcard;echo hi>a.bin'
    % adb shell 'cd /mnt/sdcard;cat a.bin' | hexdump -C
    00000000  68 69 0d 0a                                       |hi..|
    00000004
    % adb pull /mnt/sdcard/a.bin
    0 KB/s (3 bytes in 0.457s)
    % hexdump -C a.bin
    00000000  68 69 0a                                          |hi.|
    00000003
    
    Run Code Online (Sandbox Code Playgroud)
  • 它看起来是服务器或守护进程导致的而不是客户端(请参阅len = 4):

    % ADB_TRACE=1 adb shell 'cd /mnt/sdcard;cat a.bin'
    [... snip ...]
    system/core/adb/commandline.c::read_and_dump():read_and_dump(): post adb_read(fd=3): len=4
    [... snip ...]
    
    Run Code Online (Sandbox Code Playgroud)

我猜这个守护进程在windows用户的shell命令中进行了那种翻译.

我的问题是:

  1. 跆拳道?(那是什么以及为了什么目的?)
  2. 有没有办法告诉它(adbd?)不这样做?
  3. 任何人都可以想到任何创造性的方法来绕过它(我想到base64编码数据,但我宁愿避免这种开销.另外,创建本地文件不是一个选项,因为我的文件系统已经很满了)

谢谢!

android adb

13
推荐指数
3
解决办法
7627
查看次数

如何在PowerShell中正确/全局地获取UTF-8(无BOM)文件?

创建一个文件utf8.txt.确保编码为UTF-8(无BOM).将其内容设置为

cmd.exe:

type utf8.txt > out.txt

内容out.txt

在PowerShell(v4)中:

cat .\utf8.txt > out.txt

要么

type .\utf8.txt > out.txt

Out.txt内容是 €

如何全局使PowerShell正常工作?

powershell byte-order-mark utf-8 powershell-4.0

13
推荐指数
1
解决办法
7073
查看次数

在Windows上使用open ssl创建自签名证书

我遵循这些准则来使用OpenSSL生成自签名证书.

我在Windows 10下.我的工作目录如下:

PS E:\Certificats\predix\root\ca> ls


    Directory: E:\Certificats\predix\root\ca


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         9/1/2016  11:57 AM                certs
d-----         9/1/2016  11:55 AM                crl
d-----         9/1/2016  12:00 PM                intermediate
d-----         9/1/2016  11:55 AM                newcerts
d-----         9/1/2016  11:56 AM                private
-a----         9/1/2016  11:55 AM              2 index.txt
-a----         9/1/2016  11:56 AM           4306 openssl.cnf
-a----         9/1/2016  11:55 AM             14 serial
Run Code Online (Sandbox Code Playgroud)

在指南中的几个步骤之后,当我输入时

openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 3650 -notext -md s
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Using configuration from openssl.cnf
Enter pass …
Run Code Online (Sandbox Code Playgroud)

openssl

10
推荐指数
1
解决办法
5134
查看次数

Git 应用错误:无法识别的输入

 git diff 4ee42367 8c650199 > changes2.patch
 git checkout newBranch
 git apply changes2.patch
 error: unrecognized input
Run Code Online (Sandbox Code Playgroud)

当我尝试应用更改时,我会收到错误消息。我在做什么错?

git

10
推荐指数
4
解决办法
6870
查看次数

PowerShell 会话中的字符编码 (UTF-8)

大家好,

作为控制台/终端爱好者和数据库管理员 (PostgreSQL),使用正确的字符编码对我来说至关重要。因此,我希望我的客户端控制台/终端窗口始终设置为例如 UTF-8。

回到 Windows 的 CMD.EXE,这个尝试就像输入命令chcp 65001来设置所需的代码页标识符一样简单。现在,我正在切换到 PowerShell 并且设置字符编码似乎很奇怪,恕我直言。

我已经对如何将 PowerShell 会话设置为 UTF-8 进行了一些研究,我发现我需要三个步骤/命令来完成它。

PS C:\> $OutputEncoding = [System.Text.Encoding]::UTF8
PS C:\> [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
PS C:\> chcp 65001
Run Code Online (Sandbox Code Playgroud)

尽管前两个命令不直观且难以记住...遗漏其中一个命令会导致无法正常工作!此外,仅设置其中一个似乎对其他人没有影响。

因此,我必须设置所有三个以使用 PostgreSQL 的psql数据库客户端。否则我在导出/导入数据时会遇到编码问题。

现在我的问题是:“为什么?难道没有更简单的方法可以在 PowerShell 中简单地设置字符编码吗?” 不幸的是,我自己没有找到任何关于设置字符编码的合理文档!

提前致谢


/编辑

TheIncorrigible1的第二条评论让我得到了迄今为​​止最好的答案:在 Powershell 中显示 Unicode - 因此可以将整个 PowerShell 与两个单独的语句设置为所需的编码 (UTF-8)。

PS C:\> $OutputEncoding = [System.Console]::OutputEncoding = [System.Console]::InputEncoding = [System.Text.Encoding]::UTF8
PS C:\> $PSDefaultParameterValues['*:Encoding'] = 'utf8'
Run Code Online (Sandbox Code Playgroud)

解释:

  • $OutputEncoding设置例如|(管道)和/或程序和/或进程之间的通信的编码。 …

windows postgresql powershell character-encoding

10
推荐指数
1
解决办法
1万
查看次数