はじめての親子ハイキングに挑戦!! >>

Perlで作ったcgiで、ブラウザから文字入力してデータ保存するcgiがあるのですが、データの「が」が、「が」のように保存されてしまうケースがあります。
おそらく「か」+「濁点の゛」の2つに分かれてしまったのだと思います。
データは、EUC-JPでテキストで保存されています。

このデータ「が」を、「が」に戻す方法を教えてください。

A 回答 (1件)

力ずくだけど s/// で変換する.

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
s///で、がぎぐげござじず・・・ で解決しました。
ありがとうございました。

お礼日時:2018/11/09 06:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qc言語の課題がわかりません

XOR を用いて文字列の暗号化及び暗号化された文字列の復号化をするプログラムを作成し,暗号化した文字列の結果は code.txt に出力し、復号化する際には code.txt からファイルを読み込んで復号化することとし、入力する文字列は最大で 9 文字までとする。暗号化および復号化には鍵として1つの文字用いる。鍵は暗号化の際に入力させ、復号化の際にも同じ鍵を用いる。暗号化は文字列の各文字ごとに鍵との間の XOR を取るものとする。と課題で出たのですが、自分には難しすぎて出来ません。どなたかおしえてください。プログラムの途中経過と実行例を記しておきます。
#include<stdio.h>
int main(){
int x;
char a[256],b[256];

printf("Select Mode 1.Encryption, 2.Decryption :");
scanf("%d",&x);
if(a==1){
printf("Input passphrase :");
scanf("%s",a);
printf("Input key:");
scanf("%d",b);
}else{
printf("Input key:");
scanf("%d",b);

}

if(a==3){
printf("Invalid value\n");
}
return 0;
}
<実行例 1>
Select Mode 1.Encryption, 2.Decryption : 1
Input passphrase : password
Input key : $
TEWWSKV@
<実行例 2>
Select Mode 1.Encryption, 2.Decryption : 2
Input key : $
Code : TEWWSKV@
Decode : password
<実行例 3>
Select Mode 1.Encryption, 2.Decryption : 3
Invalid value

XOR を用いて文字列の暗号化及び暗号化された文字列の復号化をするプログラムを作成し,暗号化した文字列の結果は code.txt に出力し、復号化する際には code.txt からファイルを読み込んで復号化することとし、入力する文字列は最大で 9 文字までとする。暗号化および復号化には鍵として1つの文字用いる。鍵は暗号化の際に入力させ、復号化の際にも同じ鍵を用いる。暗号化は文字列の各文字ごとに鍵との間の XOR を取るものとする。と課題で出たのですが、自分には難しすぎて出来ません。どなたかおしえてください...続きを読む

Aベストアンサー

以下、ファイルの入出力を絡めると理解が遠のくので、
シンプルに、画面を通しての入出力動作をするものにしました。
forループの中で行っている1行が最も重要な箇所なので、じっくり理解して下さい。

#include<stdio.h>
#include<string.h>

int main() {
int x;
char a[9+1];
char b[1+1];
char r[9+1];

memset(a, 0x00, sizeof(a));
memset(b, 0x00, sizeof(b));
memset(r, 0x00, sizeof(r));

printf("Select Mode 1.Encryption, 2.Decryption : ");
scanf_s("%d", &x);
if (x == 1) {

printf("Input passphrase : ");
scanf("%s", a);

printf("Input key: ");
scanf("%s", b);

} else if (x == 2) {
printf("Input key: ");
scanf("%s", b);

printf("Code : ");
scanf("%s", a);

printf("Decode : ");

} else {
printf("Invalid value\n");
return 0;
}

for (unsigned int i = 0; i < strlen(a); i++) {
r[i] = a[i] ^ b[0];
}

printf("%s\n", r);

return 0;
}

以下、ファイルの入出力を絡めると理解が遠のくので、
シンプルに、画面を通しての入出力動作をするものにしました。
forループの中で行っている1行が最も重要な箇所なので、じっくり理解して下さい。

#include<stdio.h>
#include<string.h>

int main() {
int x;
char a[9+1];
char b[1+1];
char r[9+1];

memset(a, 0x00, sizeof(a));
memset(b, 0x00, sizeof(b));
memset(r, 0x00, sizeof(r));

printf("Select Mode 1.Encryption, 2.Decryption : ");
scanf_s("%d", &x);
if (x == 1) {

printf(...続きを読む

Qsleep関数の原理について

sleep関数がPC内でどういった原理で一定時間おきに動作などを行っているのか教えてください。
「Linuxカーネルがどういう働きしている」「ハードがどういう動作している」とかです。

Aベストアンサー

>一定時間おきに動作などを行っているのか
確実にsleep関数で指定した時間はお休みしているだけであり、
厳密には「一定時間おき」に動作はしません。

・LinuxはマルチタスクOSである
・一定時間(確か100Hzだったと思います)ごとにタスク切り換えを行っている

この2点がわかっていれば、
>「Linuxカーネルがどういう働きしている」
は簡単ですよね。

「sleep関数で指定した時間は、タスク切り換えで自分にCPU時間を割り当てることはしない」というだけです。

>「ハードがどういう動作している」
特段ハードでは、sleep関数実現のために何もしていません。

<おまけ>
sleep関数を呼ばなくてもマルチタスクOS上のタスクは、
 ユーザの知らないタイミングで休み休み動いている
ということです。

Qこのプログラムを教えてください。

このプログラムを教えてください。

Aベストアンサー

以下のPGで実現出来ます。
難解なところは特にありません。
初めて見る関数などの無いよう、敢えて四則演算を用いて解を導いています。
これを見て、数式の解を表現する1つの方法をぜひ身に付けて下さい。

/* 課題1 */
/* maru.c */

#include<stdio.h>
#include<string.h>
#define PI 3.14

int main() {

float d; /* 入力の直径 */
float e; /* 円周 */
float m; /* 面積 */
float s; /* 表面積 */
float v; /* 体積 */

printf("直径を入力してください[cm]: ");
scanf("%f", &d);

d = d / 2; /* 入力直径を半径に変換 */
d = d / 100; /* 入力値の単位変換 [cm]→[m] */

printf("(1)円の円周 [m] =%f\n", 2 * PI * d );
printf("(2)円の面積 [m2]=%f\n", PI * d * d );
printf("(3)球の表面積[m2]=%f\n", 4 * PI * d * d );
printf("(4)球の体積 [m3]=%f\n", (4.0 / 3.0) * PI * d * d * d);

return 0;
}

以下のPGで実現出来ます。
難解なところは特にありません。
初めて見る関数などの無いよう、敢えて四則演算を用いて解を導いています。
これを見て、数式の解を表現する1つの方法をぜひ身に付けて下さい。

/* 課題1 */
/* maru.c */

#include<stdio.h>
#include<string.h>
#define PI 3.14

int main() {

float d; /* 入力の直径 */
float e; /* 円周 */
float m; /* 面積 */
float s; /* 表面積 */
float v; /* 体積 */

printf("直径を入力してください[cm]: ");
scanf("%f", &d);

d = d / 2; /* ...続きを読む

Q先に質問した画像が不鮮明の為 テキストを添付します 上から10行目はinvalid characte

先に質問した画像が不鮮明の為
テキストを添付します
上から10行目はinvalid character in identifierのエラー
 
上から17行目は忘れました
言語はpythonです
質問の仕方が悪い見たいですみません

Aベストアンサー

No8です。No9の方の指摘を含めて修正し、一応ここまで表示されるようになりました。
ソースは、
https://ideone.com/SfZIWW
に格納してあります。

Q親ループのループ変数$_を子ループから参照したい

for(0 .. 2) {
for(3 .. 5) {
print($_)
}
}
子ループ内で親ループのループ変数$_を参照したいです。
子ループ内では$_は子ループに局所化されてしまい、このままでは親ループで使用している同名のループ変数$_を参照できないのですが、この親ループのループ変数$_を何とかして見る方法はありますか。
別名の変数を用意すれば簡単に解決する問題ですが、同名の変数でも参照するやり方があれば知りたいです。

Aベストアンサー

ないです.

QC言語について質問です。 下記のように出力する際は、どのように記述すれば良いのでしょうか? ****

C言語について質問です。
下記のように出力する際は、どのように記述すれば良いのでしょうか?
********
* スタート *
********

Aベストアンサー

printf("********\n* %s *\n********\n", "スタート");

Qこのプログラミングの問題がいくら考えてもわかりません。for文とif文を組み合わせて使うと言われたの

このプログラミングの問題がいくら考えてもわかりません。for文とif文を組み合わせて使うと言われたのですが、よろしければ教えてください

Aベストアンサー

No.1です、
念のための追加です。

日本語で「〇〇の値が××だったら、、、。そうでなかったら~。」といった表現で書かれたものが多くのプログラミング言語ではifを用いた処理になります。
同じく「〇〇の値が××になるまで、、、を繰り返す。」といった表現で書かれたものfor文やwhile文を用いた処理になります。

参考まで。

QPerlのプログラミングに困っています。

Perlでプログラムを書いています。
整数を1個受け取ってその整数の数だけコマンドプロンプト上に*の記号を使って縦横に左上の向きの直角三角形を表示させる方法はどのようにやるのでしょうか。
例えば「5」という数字を受け取った場合は
*****
****
***
**
*
のように表示させたいです。
宜しくお願いします。

Aベストアンサー

あなたのソースを多少修正しました。
以下のようにしてください。
---------------------------------------------
print '正整数を入力して下さい: ';
$n = <STDIN>;
chomp($n);

while ($n > 0) {
$y = $n;
while ($y > 0) {
print "+";
$y--;
}
print "\n";
$n--;
}

Qインタプリタ言語とスプリクト言語

インタプリタ言語とスプリクト言語の違いがいまいち分かりません。

分かる方よろしくお願いいたします。

Aベストアンサー

スクリプト言語
一般の利用者でも扱える程度に簡単で、短い台本(スクリプト)を書く目的で使われる様な、プログラミング言語の分類
技術者が使う様な、高機能ながら高難度な汎用言語と比べられる。

インタプリタ
ソースコードを、なんらかの翻訳作業をしながら実行する、処理系の分類
コンパイラ
ソースコードを、なんらかの翻訳作業をまとめて行い実行可能な形式を作り出す、処理系の分類

インタプリタ言語
とくにそのようなプログラミング言語の分類は無い
インタプリタ処理系で実行されることが一般的なプログラミング言語、ならばスクリプト言語が多く挙げられるが、
言語によって処理系が固定されることは通常あり得ない

QCのif文の書き方の質問です

『x=a & j=1 』の様に、『&』の前後に式を書くことがありますか?
使ったことがないので、ここに質問させて頂いております。
コメント、説明頂けますと大変有り難いです。

if stype=='L' then
x=a & j=1 //===
elseif stype=='M' then
x=a+(h/2) & j=2//============
else x=a+h & j=3//=================
end

以上、宜しくお願いします。

Aベストアンサー

見た目から、命令の区切りに使っているように見えますが、
公式マニュアルを確認しても ; や , はありましたが & は見つけられなかったので断言はできません。

https://help.scilab.org/docs/6.0.1/ja_JP/comma.html
https://help.scilab.org/docs/6.0.1/ja_JP/semicolon.html


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング